@strapi/admin 5.42.1 → 5.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/admin/admin/src/components/Form.js +11 -10
  2. package/dist/admin/admin/src/components/Form.js.map +1 -1
  3. package/dist/admin/admin/src/components/Form.mjs +11 -10
  4. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/FormInputs/Date.js +2 -2
  6. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  7. package/dist/admin/admin/src/components/FormInputs/Date.mjs +2 -2
  8. package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
  10. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  11. package/dist/admin/admin/src/components/GuidedTour/Context.mjs +3 -2
  12. package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/PageHelpers.js +1 -1
  14. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  15. package/dist/admin/admin/src/components/PageHelpers.mjs +1 -1
  16. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/Table.js +28 -15
  18. package/dist/admin/admin/src/components/Table.js.map +1 -1
  19. package/dist/admin/admin/src/components/Table.mjs +29 -16
  20. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  21. package/dist/admin/admin/src/core/store/configure.js +3 -1
  22. package/dist/admin/admin/src/core/store/configure.js.map +1 -1
  23. package/dist/admin/admin/src/core/store/configure.mjs +3 -1
  24. package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
  25. package/dist/admin/admin/src/hooks/usePersistentState.js +9 -4
  26. package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
  27. package/dist/admin/admin/src/hooks/usePersistentState.mjs +10 -6
  28. package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
  29. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +4 -1
  30. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  31. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs +4 -1
  32. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
  33. package/dist/admin/admin/src/render.js +2 -0
  34. package/dist/admin/admin/src/render.js.map +1 -1
  35. package/dist/admin/admin/src/render.mjs +2 -0
  36. package/dist/admin/admin/src/render.mjs.map +1 -1
  37. package/dist/admin/admin/src/services/api.js +2 -2
  38. package/dist/admin/admin/src/services/api.js.map +1 -1
  39. package/dist/admin/admin/src/services/api.mjs +2 -2
  40. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  41. package/dist/admin/admin/src/translations/nl.json.js +394 -89
  42. package/dist/admin/admin/src/translations/nl.json.js.map +1 -1
  43. package/dist/admin/admin/src/translations/nl.json.mjs +393 -90
  44. package/dist/admin/admin/src/translations/nl.json.mjs.map +1 -1
  45. package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js +1 -1
  46. package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js.map +1 -1
  47. package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs +2 -2
  48. package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs.map +1 -1
  49. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +1 -1
  50. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  51. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +2 -2
  52. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  53. package/dist/admin/ee/admin/src/services/ai.js +7 -7
  54. package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
  55. package/dist/admin/ee/admin/src/services/ai.mjs +6 -6
  56. package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
  57. package/dist/admin/ee.js +2 -2
  58. package/dist/admin/ee.mjs +1 -1
  59. package/dist/admin/index.js +1 -0
  60. package/dist/admin/index.js.map +1 -1
  61. package/dist/admin/index.mjs +1 -1
  62. package/dist/admin/src/core/store/configure.d.ts +2 -2
  63. package/dist/admin/src/core/store/hooks.d.ts +2 -2
  64. package/dist/admin/src/ee.d.ts +1 -1
  65. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  66. package/dist/admin/src/hooks/usePersistentState.d.ts +2 -1
  67. package/dist/admin/src/index.d.ts +1 -1
  68. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  69. package/dist/admin/src/selectors.d.ts +2 -2
  70. package/dist/admin/src/services/admin.d.ts +6 -6
  71. package/dist/admin/src/services/api.d.ts +1 -1
  72. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  73. package/dist/admin/src/services/auth.d.ts +11 -11
  74. package/dist/admin/src/services/contentApi.d.ts +1 -1
  75. package/dist/admin/src/services/contentManager.d.ts +1 -1
  76. package/dist/admin/src/services/homepage.d.ts +3 -3
  77. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  78. package/dist/admin/src/services/users.d.ts +8 -8
  79. package/dist/admin/src/services/webhooks.d.ts +2 -2
  80. package/dist/admin/tests/utils.d.ts +1 -1
  81. package/dist/ee/admin/src/services/ai.d.ts +6 -6
  82. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  83. package/dist/ee/server/src/index.d.ts +0 -16
  84. package/dist/ee/server/src/index.d.ts.map +1 -1
  85. package/dist/server/ee/server/src/index.js +0 -16
  86. package/dist/server/ee/server/src/index.js.map +1 -1
  87. package/dist/server/ee/server/src/index.mjs +0 -16
  88. package/dist/server/ee/server/src/index.mjs.map +1 -1
  89. package/dist/server/server/src/ai/controllers/ai.js +52 -0
  90. package/dist/server/server/src/ai/controllers/ai.js.map +1 -0
  91. package/dist/server/server/src/ai/controllers/ai.mjs +50 -0
  92. package/dist/server/server/src/ai/controllers/ai.mjs.map +1 -0
  93. package/dist/server/{ee/server → server}/src/ai/routes/ai.js +1 -2
  94. package/dist/server/server/src/ai/routes/ai.js.map +1 -0
  95. package/dist/server/{ee/server → server}/src/ai/routes/ai.mjs +1 -2
  96. package/dist/server/server/src/ai/routes/ai.mjs.map +1 -0
  97. package/dist/server/{ee/server/src/ai/containers → server/src/ai/services}/ai.js +107 -32
  98. package/dist/server/server/src/ai/services/ai.js.map +1 -0
  99. package/dist/server/{ee/server/src/ai/containers → server/src/ai/services}/ai.mjs +107 -32
  100. package/dist/server/server/src/ai/services/ai.mjs.map +1 -0
  101. package/dist/server/server/src/controllers/index.js +3 -1
  102. package/dist/server/server/src/controllers/index.js.map +1 -1
  103. package/dist/server/server/src/controllers/index.mjs +3 -1
  104. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  105. package/dist/server/server/src/register.js +4 -0
  106. package/dist/server/server/src/register.js.map +1 -1
  107. package/dist/server/server/src/register.mjs +4 -0
  108. package/dist/server/server/src/register.mjs.map +1 -1
  109. package/dist/server/server/src/routes/index.js +3 -1
  110. package/dist/server/server/src/routes/index.js.map +1 -1
  111. package/dist/server/server/src/routes/index.mjs +3 -1
  112. package/dist/server/server/src/routes/index.mjs.map +1 -1
  113. package/dist/{ee/server → server}/src/ai/controllers/ai.d.ts +1 -1
  114. package/dist/server/src/ai/controllers/ai.d.ts.map +1 -0
  115. package/dist/server/src/ai/routes/ai.d.ts.map +1 -0
  116. package/dist/server/src/ai/services/ai.d.ts +30 -0
  117. package/dist/server/src/ai/services/ai.d.ts.map +1 -0
  118. package/dist/server/src/controllers/index.d.ts +5 -0
  119. package/dist/server/src/controllers/index.d.ts.map +1 -1
  120. package/dist/server/src/index.d.ts +5 -0
  121. package/dist/server/src/index.d.ts.map +1 -1
  122. package/dist/server/src/register.d.ts.map +1 -1
  123. package/dist/server/src/routes/index.d.ts.map +1 -1
  124. package/dist/shared/contracts/ai.d.ts +3 -3
  125. package/package.json +8 -8
  126. package/dist/ee/server/src/ai/containers/ai.d.ts +0 -15
  127. package/dist/ee/server/src/ai/containers/ai.d.ts.map +0 -1
  128. package/dist/ee/server/src/ai/controllers/ai.d.ts.map +0 -1
  129. package/dist/ee/server/src/ai/routes/ai.d.ts.map +0 -1
  130. package/dist/server/ee/server/src/ai/containers/ai.js.map +0 -1
  131. package/dist/server/ee/server/src/ai/containers/ai.mjs.map +0 -1
  132. package/dist/server/ee/server/src/ai/controllers/ai.js +0 -121
  133. package/dist/server/ee/server/src/ai/controllers/ai.js.map +0 -1
  134. package/dist/server/ee/server/src/ai/controllers/ai.mjs +0 -119
  135. package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +0 -1
  136. package/dist/server/ee/server/src/ai/routes/ai.js.map +0 -1
  137. package/dist/server/ee/server/src/ai/routes/ai.mjs.map +0 -1
  138. /package/dist/{ee/server → server}/src/ai/routes/ai.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"LogoInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput type=\"url\" onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","file","File","config","type","headers","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,MAAM,CAACA,wBAAAA,EAA0BC,mBAAAA,CAAoB,GACnDC,0BAAAA,CAAqC,WAAA,CAAA;AAgBvC,MAAMC,SAAAA,GAAY,CAAC,EACjBC,SAAS,EACTC,UAAU,EACVC,WAAW,EACXC,IAAI,EACJC,KAAK,EACLC,YAAY,EACG,GAAA;AACf,IAAA,MAAM,CAACC,UAAAA,EAAYC,aAAAA,CAAc,GAAGC,iBAAMC,QAAQ,EAAA;AAClD,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGH,iBAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEG,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMC,WAAAA,GAAc,IAAA;QAClBP,aAAAA,CAAcQ,SAAAA,CAAAA;QACdJ,cAAAA,CAAeI,SAAAA,CAAAA;AACjB,IAAA,CAAA;IAEA,qBACEC,cAAA,CAACC,mBAAMC,IAAI,EAAA;AACTC,QAAAA,IAAAA,EAAM,CAAC,CAACT,WAAAA;AACRU,QAAAA,YAAAA,EAAc,CAACC,KAAAA,GAAAA;AACb,YAAA,IAAIA,UAAU,KAAA,EAAO;AACnBP,gBAAAA,WAAAA,EAAAA;AACF,YAAA;AACF,QAAA,CAAA;AAEA,QAAA,QAAA,gBAAAQ,eAAA,CAAC1B,wBAAAA,EAAAA;YACCW,aAAAA,EAAeA,aAAAA;YACfD,UAAAA,EAAYA,UAAAA;YACZiB,QAAAA,EAAUZ,cAAAA;YACVa,OAAAA,EAASV,WAAAA;;8BAETE,cAAA,CAACS,0BAAAA,EAAAA;oBACCrB,KAAAA,EAAOA,KAAAA;oBACPsB,aAAAA,EAAe,CAAA;oBACfvB,IAAAA,EAAMA,IAAAA;;;oBAGNwB,aAAAA,EAAc,EAAA;oBACdC,SAAAA,EAAU,EAAA;AACVC,oBAAAA,MAAAA,EAAQ,IAAA,CAAO,CAAA;AACfC,oBAAAA,UAAAA,EAAY,IAAA,CAAO,CAAA;AACnBC,oBAAAA,cAAAA,EAAgB9B,YAAY+B,IAAAA,IAAQ,UAAA;AACpCC,oBAAAA,OAAAA,gBACEX,eAAA,CAACY,4BAAAA,EAAAA;;AACC,0CAAAlB,cAAA,CAACC,mBAAMkB,OAAO,EAAA;AACZ,gCAAA,QAAA,gBAAAnB,cAAA,CAACoB,uBAAAA,EAAAA;AACCC,oCAAAA,QAAAA,EAAU,CAACrC,SAAAA;AACXsC,oCAAAA,OAAAA,EAAS,IAAM3B,cAAAA,CAAe,QAAA,CAAA;AAC9BP,oCAAAA,KAAAA,EAAOQ,aAAAA,CAAc;wCACnB2B,EAAAA,EAAI,2DAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA,CAAA;AAEA,oCAAA,QAAA,gBAAAxB,cAAA,CAACyB,UAAAA,EAAAA,EAAAA;;;AAGJxC,4BAAAA,UAAAA,EAAYyC,qBACX1B,cAAA,CAACoB,uBAAAA,EAAAA;AACCC,gCAAAA,QAAAA,EAAU,CAACrC,SAAAA;AACXsC,gCAAAA,OAAAA,EAAS,IAAMjC,YAAAA,CAAa,IAAA,CAAA;AAC5BD,gCAAAA,KAAAA,EAAOQ,aAAAA,CAAc;oCACnB2B,EAAAA,EAAI,0DAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA,CAAA;AAEA,gCAAA,QAAA,gBAAAxB,cAAA,CAAC2B,oBAAAA,EAAAA,EAAAA;;;;AAMT,oBAAA,QAAA,gBAAA3B,cAAA,CAAC4B,0BAAAA,EAAAA;AACCxC,wBAAAA,KAAAA,EAAOQ,aAAAA,CAAc;4BACnB2B,EAAAA,EAAI,yDAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAxB,cAAA,CAAC6B,gBAAAA,EAAAA;4BACCC,SAAAA,EAAU,KAAA;4BACVC,QAAAA,EAAS,KAAA;4BACTC,GAAAA,EAAI,KAAA;AACJC,4BAAAA,GAAAA,EAAKhD,YAAYyC,GAAAA,IAAOxC,WAAAA;AACxBgD,4BAAAA,GAAAA,EAAKtC,aAAAA,CAAc;gCACjB2B,EAAAA,EAAI,mDAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;;AAIN,8BAAAlB,eAAA,CAACL,mBAAMkC,OAAO,EAAA;;AACZ,sCAAAnC,cAAA,CAACC,mBAAMmC,MAAM,EAAA;oDACXpC,cAAA,CAACC,mBAAMoC,KAAK,EAAA;AACTzC,gCAAAA,QAAAA,EAAAA,aAAAA,CACCF,gBAAgB,QAAA,GACZ;oCACE6B,EAAAA,EAAI,iDAAA;oCACJC,cAAAA,EAAgB;iCAClB,GACA;oCACED,EAAAA,EAAI,kDAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;;wBAIT9B,WAAAA,KAAgB,QAAA,iBACfM,cAAA,CAACsC,aAAAA,EAAAA,EAAAA,CAAAA,iBAEDtC,cAAA,CAACuC,iBAAAA,EAAAA;4BAAkBlD,YAAAA,EAAcA;;;;;;;AAM7C;AAEA;;AAEkG,qGAElG,MAAMiD,aAAAA,GAAgB,IAAA;IACpB,MAAM,EAAE1C,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACES,eAAA,CAACkC,kBAAKtC,IAAI,EAAA;QAACuC,OAAAA,EAAQ,QAAA;QAASC,YAAAA,EAAa,UAAA;;0BACvC1C,cAAA,CAAC6B,gBAAAA,EAAAA;gBAAIc,WAAAA,EAAa,CAAA;gBAAGC,YAAAA,EAAc,CAAA;wCACjCtC,eAAA,CAACkC,kBAAKK,IAAI,EAAA;AACRC,oBAAAA,YAAAA,EAAYlD,aAAAA,CAAc;wBACxB2B,EAAAA,EAAI,oDAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;;AAEA,sCAAAxB,cAAA,CAACwC,kBAAKrB,OAAO,EAAA;4BAAC4B,KAAAA,EAAM,UAAA;sCACjBnD,aAAAA,CAAc;gCACb2B,EAAAA,EAAI,+DAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;AAEF,sCAAAxB,cAAA,CAACwC,kBAAKrB,OAAO,EAAA;4BAAC4B,KAAAA,EAAM,KAAA;sCACjBnD,aAAAA,CAAc;gCACb2B,EAAAA,EAAI,0DAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;;;AAIN,0BAAAxB,cAAA,CAACwC,kBAAKL,OAAO,EAAA;gBAACY,KAAAA,EAAM,UAAA;AAClB,gBAAA,QAAA,gBAAA/C,cAAA,CAACgD,YAAAA,EAAAA,EAAAA;;AAEH,0BAAAhD,cAAA,CAACwC,kBAAKL,OAAO,EAAA;gBAACY,KAAAA,EAAM,KAAA;AAClB,gBAAA,QAAA,gBAAA/C,cAAA,CAACiD,OAAAA,EAAAA,EAAAA;;;;AAIT,CAAA;AAEA;;AAEkG,qGAElG,MAAMA,OAAAA,GAAU,IAAA;IACd,MAAM,EAAErD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACqD,OAAAA,EAASC,UAAAA,CAAW,GAAG3D,gBAAAA,CAAMC,QAAQ,CAAC,EAAA,CAAA;AAC7C,IAAA,MAAM,CAAC2D,KAAAA,EAAOC,QAAAA,CAAS,GAAG7D,iBAAMC,QAAQ,EAAA;IACxC,MAAM,EAAEF,aAAa,EAAEgB,QAAQ,EAAEC,OAAO,EAAE,GAAG3B,mBAAAA,CAAoB,SAAA,CAAA;AAEjE,IAAA,MAAMyE,eAA2C,CAACC,CAAAA,GAAAA;QAChDJ,UAAAA,CAAWI,CAAAA,CAAEC,MAAM,CAACT,KAAK,CAAA;AAC3B,IAAA,CAAA;AAEA,IAAA,MAAMU,eAAwD,OAAOC,KAAAA,GAAAA;AACnEA,QAAAA,KAAAA,CAAMC,cAAc,EAAA;AAEpB,QAAA,MAAMC,IAAAA,GAAO,IAAIC,QAAAA,CAASH,KAAAA,CAAMF,MAAM,CAAA;QAEtC,MAAM9B,GAAAA,GAAMkC,IAAAA,CAAKE,GAAG,CAAC,UAAA,CAAA;AAErB,QAAA,IAAI,CAACpC,GAAAA,EAAK;AACR,YAAA;AACF,QAAA;QAEA,IAAI;AACF,YAAA,MAAMqC,MAAM,MAAMC,KAAAA,CAAMF,GAAG,CAACpC,GAAAA,CAAIuC,QAAQ,EAAA,EAAI;gBAAEC,YAAAA,EAAc,MAAA;gBAAQC,OAAAA,EAAS;AAAK,aAAA,CAAA;YAElF,MAAMC,IAAAA,GAAO,IAAIC,IAAAA,CAAK;AAACN,gBAAAA,GAAAA,CAAIH;AAAK,aAAA,EAAEG,GAAAA,CAAIO,MAAM,CAAC5C,GAAG,IAAI,EAAA,EAAI;gBACtD6C,IAAAA,EAAMR,GAAAA,CAAIS,OAAO,CAAC,cAAA;AACpB,aAAA,CAAA;YAEA,MAAMC,KAAAA,GAAQ,MAAMC,wBAAAA,CAAmBN,IAAAA,CAAAA;YAEvC7E,aAAAA,CAAckF,KAAAA,CAAAA;YACdlE,QAAAA,CAAS,SAAA,CAAA;AACX,QAAA,CAAA,CAAE,OAAOoE,GAAAA,EAAK;AACZ,YAAA,IAAIA,eAAeC,gBAAAA,EAAY;AAC7BvB,gBAAAA,QAAAA,CACEzD,aAAAA,CAAc;oBACZ2B,EAAAA,EAAI,+DAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA,CAAA;YAEJ,CAAA,MAAO,IAAImD,eAAeE,sBAAAA,EAAkB;gBAC1CxB,QAAAA,CAASzD,aAAAA,CAAc+E,GAAAA,CAAIG,cAAc,EAAE;oBAAEC,IAAAA,EAAMC,cAAAA;oBAAMC,SAAAA,EAAWC;AAAU,iBAAA,CAAA,CAAA;YAChF,CAAA,MAAO;gBACL,MAAMP,GAAAA;AACR,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACErE,eAAA,CAAC6E,MAAAA,EAAAA;QAAKC,QAAAA,EAAU3B,YAAAA;;0BACdzD,cAAA,CAAC6B,gBAAAA,EAAAA;gBAAIc,WAAAA,EAAa,CAAA;gBAAGC,YAAAA,EAAc,CAAA;gBAAGyC,UAAAA,EAAY,CAAA;gBAAGC,aAAAA,EAAe,CAAA;wCAClEhF,eAAA,CAACiF,mBAAMrF,IAAI,EAAA;oBAACkD,KAAAA,EAAOA,KAAAA;oBAAOpC,IAAAA,EAAK,UAAA;;AAC7B,sCAAAhB,cAAA,CAACuF,mBAAMC,KAAK,EAAA;sCACT5F,aAAAA,CAAc;gCACb2B,EAAAA,EAAI,sEAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;sCAEFxB,cAAA,CAACyF,sBAAAA,EAAAA;4BAAUlB,IAAAA,EAAK,KAAA;4BAAMmB,QAAAA,EAAUpC,YAAAA;4BAAcP,KAAAA,EAAOG;;AACrD,sCAAAlD,cAAA,CAACuF,mBAAMI,KAAK,EAAA,EAAA;;;;AAGhB,0BAAArF,eAAA,CAACL,mBAAM2F,MAAM,EAAA;;kCACX5F,cAAA,CAAC6F,mBAAAA,EAAAA;wBAAOvE,OAAAA,EAASd,OAAAA;wBAASiC,OAAAA,EAAQ,UAAA;kCAC/B7C,aAAAA,CAAc;4BAAE2B,EAAAA,EAAI,8BAAA;4BAAgCC,cAAAA,EAAgB;AAAS,yBAAA;;kCAEhFxB,cAAA,CAAC6F,mBAAAA,EAAAA;wBAAOtB,IAAAA,EAAK,QAAA;kCACV3E,aAAAA,CAAc;4BACb2B,EAAAA,EAAI,sDAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA;;;;;;AAKV,CAAA;AAEA;;AAEkG,qGAElG,MAAMwB,YAAAA,GAAe,IAAA;IACnB,MAAM,EAAEpD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACiG,QAAAA,EAAUC,WAAAA,CAAY,GAAGvG,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAC/C,IAAA,MAAM,CAACuG,SAAAA,EAAWC,YAAAA,CAAa,GAAGzG,iBAAMC,QAAQ,EAAA;IAChD,MAAMyG,QAAAA,GAAW1G,gBAAAA,CAAM2G,MAAM,CAAmB,IAAA,CAAA;IAChD,MAAM5E,EAAAA,GAAK/B,iBAAM4G,KAAK,EAAA;IAEtB,MAAM,EAAE7G,aAAa,EAAEgB,QAAQ,EAAEC,OAAO,EAAE,GAAG3B,mBAAAA,CAAoB,cAAA,CAAA;AAEjE,IAAA,MAAMwH,eAAAA,GAAkB,IAAA;QACtBN,WAAAA,CAAY,IAAA,CAAA;AACd,IAAA,CAAA;AACA,IAAA,MAAMO,eAAAA,GAAkB,IAAA;QACtBP,WAAAA,CAAY,KAAA,CAAA;AACd,IAAA,CAAA;AAEA,IAAA,MAAMQ,cAAsC,CAAChD,CAAAA,GAAAA;AAC3CA,QAAAA,CAAAA,CAAEI,cAAc,EAAA;QAChBuC,QAAAA,CAASM,OAAO,CAACC,KAAK,EAAA;AACxB,IAAA,CAAA;AAEA,IAAA,MAAMnD,YAAAA,GAAe,UAAA;AACnBgD,QAAAA,eAAAA,EAAAA;AAEA,QAAA,IAAI,CAACJ,QAAAA,CAASM,OAAO,CAACE,KAAK,EAAE;AAC3B,YAAA;AACF,QAAA;AAEA,QAAA,MAAM,CAACtC,IAAAA,CAAK,GAAG8B,QAAAA,CAASM,OAAO,CAACE,KAAK;QAErC,IAAI;YACF,MAAMjC,KAAAA,GAAQ,MAAMC,wBAAAA,CAAmBN,IAAAA,CAAAA;YACvC7E,aAAAA,CAAckF,KAAAA,CAAAA;YACdlE,QAAAA,CAAS,SAAA,CAAA;AACX,QAAA,CAAA,CAAE,OAAOoE,GAAAA,EAAK;AACZ,YAAA,IAAIA,eAAeE,sBAAAA,EAAkB;gBACnCoB,YAAAA,CAAarG,aAAAA,CAAc+E,GAAAA,CAAIG,cAAc,EAAE;oBAAEC,IAAAA,EAAMC,cAAAA;oBAAMC,SAAAA,EAAWC;AAAU,iBAAA,CAAA,CAAA;gBAClFgB,QAAAA,CAASM,OAAO,CAACG,KAAK,EAAA;YACxB,CAAA,MAAO;gBACL,MAAMhC,GAAAA;AACR,YAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,qBACErE,eAAA,CAAAsG,mBAAA,EAAA;;0BACE5G,cAAA,CAACmF,MAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAnF,cAAA,CAAC6B,gBAAAA,EAAAA;oBAAIc,WAAAA,EAAa,CAAA;oBAAGC,YAAAA,EAAc,CAAA;oBAAGyC,UAAAA,EAAY,CAAA;oBAAGC,aAAAA,EAAe,CAAA;4CAClEtF,cAAA,CAACuF,mBAAMrF,IAAI,EAAA;wBAACc,IAAAA,EAAMO,EAAAA;wBAAI6B,KAAAA,EAAO4C,SAAAA;AAC3B,wBAAA,QAAA,gBAAA1F,eAAA,CAACuG,iBAAAA,EAAAA;4BAAKC,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;4BAAUC,GAAAA,EAAK,CAAA;;8CACjD1G,eAAA,CAACuG,iBAAAA,EAAAA;oCACCxB,UAAAA,EAAY,CAAA;oCACZC,aAAAA,EAAe,CAAA;oCACf2B,SAAS,EAAA,IAAA;oCACTC,cAAAA,EAAe,QAAA;oCACfJ,SAAAA,EAAU,QAAA;AACVK,oCAAAA,UAAAA,EAAYrB,WAAW,YAAA,GAAe,YAAA;oCACtCsB,WAAAA,EAAatB,QAAAA,GAAW,YAAA,GAAeE,SAAAA,GAAY,WAAA,GAAc,YAAA;oCACjEqB,WAAAA,EAAY,QAAA;oCACZC,WAAAA,EAAY,KAAA;oCACZC,QAAAA,EAAS,UAAA;oCACTC,WAAAA,EAAanB,eAAAA;oCACboB,WAAAA,EAAanB,eAAAA;;sDAEbtG,cAAA,CAAC0H,gBAAAA,EAAAA;4CAAWC,IAAAA,EAAK,YAAA;4CAAaC,KAAAA,EAAM,MAAA;4CAAOC,MAAAA,EAAO,MAAA;4CAAOC,aAAW,EAAA;;sDACpE9H,cAAA,CAAC6B,gBAAAA,EAAAA;4CAAIwD,UAAAA,EAAY,CAAA;4CAAGC,aAAAA,EAAe,CAAA;AACjC,4CAAA,QAAA,gBAAAtF,cAAA,CAAC+H,uBAAAA,EAAAA;gDAAWtF,OAAAA,EAAQ,OAAA;gDAAQT,GAAAA,EAAI,OAAA;gDAAQgG,OAAAA,EAASzG,EAAAA;0DAC9C3B,aAAAA,CAAc;oDACb2B,EAAAA,EAAI,2DAAA;oDACJC,cAAAA,EAAgB;AAClB,iDAAA;;;sDAGJxB,cAAA,CAAC6B,gBAAAA,EAAAA;4CAAI0F,QAAAA,EAAS,UAAA;AACZ,4CAAA,QAAA,gBAAAvH,cAAA,CAACiI,SAAAA,EAAAA;gDACCC,MAAAA,EAAQC,yBAAAA,CAAgBC,IAAI,CAAC,IAAA,CAAA;gDAC7B7D,IAAAA,EAAK,MAAA;gDACLvD,IAAAA,EAAK,OAAA;AACLqH,gDAAAA,QAAAA,EAAU,EAAC;gDACX3C,QAAAA,EAAUpC,YAAAA;gDACVgF,GAAAA,EAAKpC,QAAAA;gDACL3E,EAAAA,EAAIA;;;sDAGRvB,cAAA,CAAC6F,mBAAAA,EAAAA;4CAAOtB,IAAAA,EAAK,QAAA;4CAASjD,OAAAA,EAASiF,WAAAA;sDAC5B3G,aAAAA,CAAc;gDACb2B,EAAAA,EAAI,4DAAA;gDACJC,cAAAA,EAAgB;AAClB,6CAAA;;sDAEFxB,cAAA,CAAC6B,gBAAAA,EAAAA;4CAAIwD,UAAAA,EAAY,CAAA;AACf,4CAAA,QAAA,gBAAArF,cAAA,CAAC+H,uBAAAA,EAAAA;gDAAWtF,OAAAA,EAAQ,IAAA;gDAAK8F,SAAAA,EAAU,YAAA;0DAChC3I,aAAAA,CACC;oDACE2B,EAAAA,EAAI,iEAAA;oDACJC,cAAAA,EACE;iDACJ,EACA;oDAAEuD,IAAAA,EAAMC,cAAAA;oDAAMC,SAAAA,EAAWC;AAAU,iDAAA;;;;;AAK3C,8CAAAlF,cAAA,CAACuF,mBAAMI,KAAK,EAAA,EAAA;;;;;;AAKpB,0BAAA3F,cAAA,CAACC,mBAAM2F,MAAM,EAAA;AACX,gBAAA,QAAA,gBAAA5F,cAAA,CAAC6F,mBAAAA,EAAAA;oBAAOvE,OAAAA,EAASd,OAAAA;oBAASiC,OAAAA,EAAQ,UAAA;8BAC/B7C,aAAAA,CAAc;wBAAE2B,EAAAA,EAAI,8BAAA;wBAAgCC,cAAAA,EAAgB;AAAS,qBAAA;;;;;AAKxF,CAAA;AAEA,MAAMyG,SAAAA,GAAYO,aAAAA,CAAOjD,kBAAAA,CAAMkD,KAAK,CAAC;;;;;;;;AAQrC,CAAC;AAUD,MAAMlG,iBAAAA,GAAoB,CAAC,EAAElD,YAAY,EAA0B,GAAA;IACjE,MAAM,EAAEO,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEP,UAAU,EAAEC,aAAa,EAAEgB,QAAQ,EAAEC,OAAO,EAAE,GAAG3B,mBAAAA,CAAoB,mBAAA,CAAA;AAE7E,IAAA,MAAM6J,YAAAA,GAAe,IAAA;QACnBnJ,aAAAA,CAAcQ,SAAAA,CAAAA;QACdQ,QAAAA,CAAS,QAAA,CAAA;AACX,IAAA,CAAA;AAEA,IAAA,MAAMoI,YAAAA,GAAe,IAAA;AACnB,QAAA,IAAIrJ,UAAAA,EAAY;YACdD,YAAAA,CAAaC,UAAAA,CAAAA;AACf,QAAA;AACAkB,QAAAA,OAAAA,EAAAA;AACF,IAAA,CAAA;IAEA,qBACEF,eAAA,CAAAsG,mBAAA,EAAA;;AACE,0BAAA5G,cAAA,CAACC,mBAAM2I,IAAI,EAAA;AACT,gBAAA,QAAA,gBAAAtI,eAAA,CAACuB,gBAAAA,EAAAA;oBAAIc,WAAAA,EAAa,CAAA;oBAAGC,YAAAA,EAAc,CAAA;oBAAGyC,UAAAA,EAAY,CAAA;oBAAGC,aAAAA,EAAe,CAAA;;sCAClEhF,eAAA,CAACuG,iBAAAA,EAAAA;4BAAKK,cAAAA,EAAe,eAAA;4BAAgB5B,aAAAA,EAAe,CAAA;;8CAClDhF,eAAA,CAACuG,iBAAAA,EAAAA;oCAAKC,SAAAA,EAAU,QAAA;oCAASC,UAAAA,EAAW,YAAA;;sDAClC/G,cAAA,CAAC+H,uBAAAA,EAAAA;4CAAWtF,OAAAA,EAAQ,IAAA;4CAAKoG,UAAAA,EAAW,MAAA;sDACjCjJ,aAAAA,CAAc;gDACb2B,EAAAA,EAAI,wDAAA;gDACJC,cAAAA,EAAgB;AAClB,6CAAA;;sDAEFxB,cAAA,CAAC+H,uBAAAA,EAAAA;4CAAWtF,OAAAA,EAAQ,IAAA;4CAAK8F,SAAAA,EAAU,YAAA;sDAChC3I,aAAAA,CAAc;gDACb2B,EAAAA,EAAI,2DAAA;gDACJC,cAAAA,EAAgB;AAClB,6CAAA;;;;8CAGJxB,cAAA,CAAC6F,mBAAAA,EAAAA;oCAAOvE,OAAAA,EAASoH,YAAAA;oCAAcjG,OAAAA,EAAQ,WAAA;8CACpC7C,aAAAA,CAAc;wCACb2B,EAAAA,EAAI,iEAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;;;sCAGJxB,cAAA,CAAC6B,gBAAAA,EAAAA;4BAAIE,QAAAA,EAAU,CAAC,KAAK,CAAC;AACnBzC,4BAAAA,QAAAA,EAAAA,UAAAA,EAAYoC,oBAAM1B,cAAA,CAAC8I,cAAAA,EAAAA;gCAAerE,KAAAA,EAAOnF;AAAiB,6BAAA,CAAA,GAAA;;;;;AAIjE,0BAAAgB,eAAA,CAACL,mBAAM2F,MAAM,EAAA;;AACX,kCAAA5F,cAAA,CAACC,mBAAM8I,KAAK,EAAA;AACV,wBAAA,QAAA,gBAAA/I,cAAA,CAAC6F,mBAAAA,EAAAA;4BAAOvE,OAAAA,EAASd,OAAAA;4BAASiC,OAAAA,EAAQ,UAAA;sCAC/B7C,aAAAA,CAAc;gCACb2B,EAAAA,EAAI,iDAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;kCAGJxB,cAAA,CAAC6F,mBAAAA,EAAAA;wBAAOvE,OAAAA,EAASqH,YAAAA;kCACd/I,aAAAA,CAAc;4BACb2B,EAAAA,EAAI,yDAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA;;;;;;AAKV,CAAA;AAUA,MAAMsH,cAAAA,GAAiB,CAAC,EAAErE,KAAK,EAAuB,GAAA;IACpD,MAAM,EAAE7E,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACES,eAAA,CAAC0I,iBAAAA,EAAAA;;0BACChJ,cAAA,CAACiJ,uBAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAjJ,cAAA,CAACkJ,sBAAAA,EAAAA;oBAAUnE,IAAAA,EAAK,GAAA;AAAI9C,oBAAAA,GAAAA,EAAKwC,MAAM/C;;;0BAEjCpB,eAAA,CAAC6I,qBAAAA,EAAAA;;kCACC7I,eAAA,CAAC8I,wBAAAA,EAAAA;;0CACCpJ,cAAA,CAACqJ,sBAAAA,EAAAA;AAAW5E,gCAAAA,QAAAA,EAAAA,KAAAA,CAAMzD;;0CAClBhB,cAAA,CAACsJ,yBAAAA,EAAAA;AACE,gCAAA,QAAA,EAAA,CAAA,EAAG7E,KAAAA,CAAM8E,GAAG,EAAEC,WAAAA,EAAAA,CAAc,GAAG,EAAE/E,KAAAA,CAAMmD,KAAK,CAAC,CAAC,EAAEnD,KAAAA,CAAMoD,MAAM,CAAA;;;;kCAGjE7H,cAAA,CAACyJ,sBAAAA,EAAAA;kCACE7J,aAAAA,CAAc;4BACb2B,EAAAA,EAAI,6DAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA;;;;;;AAKV,CAAA;;;;"}
1
+ {"version":3,"file":"LogoInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n // Axios types Content-Type as AxiosHeaderValue (string | array | null | …); File#type only accepts string | undefined.\n const contentType = res.headers['content-type'];\n const mimeType =\n typeof contentType === 'string'\n ? contentType\n : Array.isArray(contentType)\n ? contentType[0]\n : contentType != null && typeof contentType !== 'object'\n ? String(contentType)\n : undefined;\n\n const file = new File([res.data], res.config.url ?? '', {\n type: mimeType,\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput type=\"url\" onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","contentType","headers","mimeType","Array","isArray","String","file","File","config","type","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":"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"}
@@ -172,10 +172,13 @@ const LogoInput = ({ canUpdate, customLogo, defaultLogo, hint, label, onChangeLo
172
172
  responseType: 'blob',
173
173
  timeout: 8000
174
174
  });
175
+ // Axios types Content-Type as AxiosHeaderValue (string | array | null | …); File#type only accepts string | undefined.
176
+ const contentType = res.headers['content-type'];
177
+ const mimeType = typeof contentType === 'string' ? contentType : Array.isArray(contentType) ? contentType[0] : contentType != null && typeof contentType !== 'object' ? String(contentType) : undefined;
175
178
  const file = new File([
176
179
  res.data
177
180
  ], res.config.url ?? '', {
178
- type: res.headers['content-type']
181
+ type: mimeType
179
182
  });
180
183
  const asset = await parseFileMetadatas(file);
181
184
  setLocalImage(asset);
@@ -1 +1 @@
1
- {"version":3,"file":"LogoInput.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput type=\"url\" onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","file","File","config","type","headers","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":"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"}
1
+ {"version":3,"file":"LogoInput.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n // Axios types Content-Type as AxiosHeaderValue (string | array | null | …); File#type only accepts string | undefined.\n const contentType = res.headers['content-type'];\n const mimeType =\n typeof contentType === 'string'\n ? contentType\n : Array.isArray(contentType)\n ? contentType[0]\n : contentType != null && typeof contentType !== 'object'\n ? String(contentType)\n : undefined;\n\n const file = new File([res.data], res.config.url ?? '', {\n type: mimeType,\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput type=\"url\" onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","contentType","headers","mimeType","Array","isArray","String","file","File","config","type","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":"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"}
@@ -39,6 +39,7 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
39
39
  nps: false,
40
40
  promoteEE: true
41
41
  },
42
+ // @ts-expect-error – there's pollution from the global scope of Node.
42
43
  ai: {
43
44
  enabled: true
44
45
  }
@@ -54,6 +55,7 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
54
55
  isEnabled: (featureName)=>features.some((feature)=>feature.name === featureName)
55
56
  };
56
57
  window.strapi.projectType = isEE ? 'Enterprise' : 'Community';
58
+ // @ts-expect-error – there's pollution from the global scope of Node.
57
59
  window.strapi.ai = ai;
58
60
  } catch (err) {
59
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n window.strapi.ai = ai;\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n // @ts-expect-error – there's pollution from the global scope of Node.\n window.strapi.ai = ai;\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
@@ -37,6 +37,7 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
37
37
  nps: false,
38
38
  promoteEE: true
39
39
  },
40
+ // @ts-expect-error – there's pollution from the global scope of Node.
40
41
  ai: {
41
42
  enabled: true
42
43
  }
@@ -52,6 +53,7 @@ const renderAdmin = async (mountNode, { plugins, customisations, features })=>{
52
53
  isEnabled: (featureName)=>features.some((feature)=>feature.name === featureName)
53
54
  };
54
55
  window.strapi.projectType = isEE ? 'Enterprise' : 'Community';
56
+ // @ts-expect-error – there's pollution from the global scope of Node.
55
57
  window.strapi.ai = ai;
56
58
  } catch (err) {
57
59
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"render.mjs","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n window.strapi.ai = ai;\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
1
+ {"version":3,"file":"render.mjs","sources":["../../../../admin/src/render.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\nimport { createAbsoluteUrl } from './utils/urls';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n register?: (app: StrapiApp) => Promise<void> | void;\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: createAbsoluteUrl(process.env.STRAPI_ADMIN_BACKEND_URL),\n isEE: false,\n isTrial: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n ai: {\n enabled: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n isTrial: boolean;\n features: {\n name: string;\n }[];\n ai: {\n enabled: boolean;\n };\n }\n\n try {\n const {\n data: {\n data: { isEE, isTrial, features, flags, ai },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.isTrialLicense = isTrial;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n // @ts-expect-error – there's pollution from the global scope of Node.\n window.strapi.ai = ai;\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register(customisations?.register);\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["renderAdmin","mountNode","plugins","customisations","features","Error","window","strapi","backendURL","createAbsoluteUrl","process","env","STRAPI_ADMIN_BACKEND_URL","isEE","isTrial","telemetryDisabled","STRAPI_TELEMETRY_DISABLED","future","isEnabled","name","SSO","AUDIT_LOGS","REVIEW_WORKFLOWS","projectType","flags","nps","promoteEE","ai","enabled","get","getFetchClient","data","isTrialLicense","featureName","some","feature","err","console","error","app","StrapiApp","config","appPlugins","register","bootstrap","loadTrads","translations","createRoot","render","module","hot","accept"],"mappings":"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"}
@@ -17,8 +17,8 @@ var baseQuery = require('../utils/baseQuery.js');
17
17
  tagTypes: [
18
18
  'GuidedTourMeta',
19
19
  'HomepageKeyStatistics',
20
- 'AIUsage',
21
- 'AIFeatureConfig'
20
+ 'AiUsage',
21
+ 'AiFeatureConfig'
22
22
  ],
23
23
  endpoints: ()=>({})
24
24
  });
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sources":["../../../../../admin/src/services/api.ts"],"sourcesContent":["import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { fetchBaseQuery } from '../utils/baseQuery';\n\n/**\n * @public\n * @description This is the redux toolkit api for the admin panel, users\n * should use a combination of `enhanceEndpoints` to add their TagTypes\n * to utilise in their `injectEndpoints` construction for automatic cache\n * re-validation. We specifically do not store any tagTypes by default leaving\n * the API surface as small as possible. None of the data-fetching looks for the\n * StrapiApp are stored here either.\n */\nconst adminApi = createApi({\n reducerPath: 'adminApi',\n baseQuery: fetchBaseQuery(),\n tagTypes: ['GuidedTourMeta', 'HomepageKeyStatistics', 'AIUsage', 'AIFeatureConfig'],\n endpoints: () => ({}),\n});\n\nexport { adminApi };\n"],"names":["adminApi","createApi","reducerPath","baseQuery","fetchBaseQuery","tagTypes","endpoints"],"mappings":";;;;;AAIA;;;;;;;;IASA,MAAMA,WAAWC,eAAAA,CAAU;IACzBC,WAAAA,EAAa,UAAA;IACbC,SAAAA,EAAWC,wBAAAA,EAAAA;IACXC,QAAAA,EAAU;AAAC,QAAA,gBAAA;AAAkB,QAAA,uBAAA;AAAyB,QAAA,SAAA;AAAW,QAAA;AAAkB,KAAA;IACnFC,SAAAA,EAAW,KAAO,EAAC;AACrB,CAAA;;;;"}
1
+ {"version":3,"file":"api.js","sources":["../../../../../admin/src/services/api.ts"],"sourcesContent":["import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { fetchBaseQuery } from '../utils/baseQuery';\n\n/**\n * @public\n * @description This is the redux toolkit api for the admin panel, users\n * should use a combination of `enhanceEndpoints` to add their TagTypes\n * to utilise in their `injectEndpoints` construction for automatic cache\n * re-validation. We specifically do not store any tagTypes by default leaving\n * the API surface as small as possible. None of the data-fetching looks for the\n * StrapiApp are stored here either.\n */\nconst adminApi = createApi({\n reducerPath: 'adminApi',\n baseQuery: fetchBaseQuery(),\n tagTypes: ['GuidedTourMeta', 'HomepageKeyStatistics', 'AiUsage', 'AiFeatureConfig'],\n endpoints: () => ({}),\n});\n\nexport { adminApi };\n"],"names":["adminApi","createApi","reducerPath","baseQuery","fetchBaseQuery","tagTypes","endpoints"],"mappings":";;;;;AAIA;;;;;;;;IASA,MAAMA,WAAWC,eAAAA,CAAU;IACzBC,WAAAA,EAAa,UAAA;IACbC,SAAAA,EAAWC,wBAAAA,EAAAA;IACXC,QAAAA,EAAU;AAAC,QAAA,gBAAA;AAAkB,QAAA,uBAAA;AAAyB,QAAA,SAAA;AAAW,QAAA;AAAkB,KAAA;IACnFC,SAAAA,EAAW,KAAO,EAAC;AACrB,CAAA;;;;"}
@@ -15,8 +15,8 @@ import { fetchBaseQuery } from '../utils/baseQuery.mjs';
15
15
  tagTypes: [
16
16
  'GuidedTourMeta',
17
17
  'HomepageKeyStatistics',
18
- 'AIUsage',
19
- 'AIFeatureConfig'
18
+ 'AiUsage',
19
+ 'AiFeatureConfig'
20
20
  ],
21
21
  endpoints: ()=>({})
22
22
  });
@@ -1 +1 @@
1
- {"version":3,"file":"api.mjs","sources":["../../../../../admin/src/services/api.ts"],"sourcesContent":["import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { fetchBaseQuery } from '../utils/baseQuery';\n\n/**\n * @public\n * @description This is the redux toolkit api for the admin panel, users\n * should use a combination of `enhanceEndpoints` to add their TagTypes\n * to utilise in their `injectEndpoints` construction for automatic cache\n * re-validation. We specifically do not store any tagTypes by default leaving\n * the API surface as small as possible. None of the data-fetching looks for the\n * StrapiApp are stored here either.\n */\nconst adminApi = createApi({\n reducerPath: 'adminApi',\n baseQuery: fetchBaseQuery(),\n tagTypes: ['GuidedTourMeta', 'HomepageKeyStatistics', 'AIUsage', 'AIFeatureConfig'],\n endpoints: () => ({}),\n});\n\nexport { adminApi };\n"],"names":["adminApi","createApi","reducerPath","baseQuery","fetchBaseQuery","tagTypes","endpoints"],"mappings":";;;AAIA;;;;;;;;IASA,MAAMA,WAAWC,SAAAA,CAAU;IACzBC,WAAAA,EAAa,UAAA;IACbC,SAAAA,EAAWC,cAAAA,EAAAA;IACXC,QAAAA,EAAU;AAAC,QAAA,gBAAA;AAAkB,QAAA,uBAAA;AAAyB,QAAA,SAAA;AAAW,QAAA;AAAkB,KAAA;IACnFC,SAAAA,EAAW,KAAO,EAAC;AACrB,CAAA;;;;"}
1
+ {"version":3,"file":"api.mjs","sources":["../../../../../admin/src/services/api.ts"],"sourcesContent":["import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { fetchBaseQuery } from '../utils/baseQuery';\n\n/**\n * @public\n * @description This is the redux toolkit api for the admin panel, users\n * should use a combination of `enhanceEndpoints` to add their TagTypes\n * to utilise in their `injectEndpoints` construction for automatic cache\n * re-validation. We specifically do not store any tagTypes by default leaving\n * the API surface as small as possible. None of the data-fetching looks for the\n * StrapiApp are stored here either.\n */\nconst adminApi = createApi({\n reducerPath: 'adminApi',\n baseQuery: fetchBaseQuery(),\n tagTypes: ['GuidedTourMeta', 'HomepageKeyStatistics', 'AiUsage', 'AiFeatureConfig'],\n endpoints: () => ({}),\n});\n\nexport { adminApi };\n"],"names":["adminApi","createApi","reducerPath","baseQuery","fetchBaseQuery","tagTypes","endpoints"],"mappings":";;;AAIA;;;;;;;;IASA,MAAMA,WAAWC,SAAAA,CAAU;IACzBC,WAAAA,EAAa,UAAA;IACbC,SAAAA,EAAWC,cAAAA,EAAAA;IACXC,QAAAA,EAAU;AAAC,QAAA,gBAAA;AAAkB,QAAA,uBAAA;AAAyB,QAAA,SAAA;AAAW,QAAA;AAAkB,KAAA;IACnFC,SAAAA,EAAW,KAAO,EAAC;AACrB,CAAA;;;;"}