@strapi/i18n 5.28.0 → 5.30.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.
- package/dist/admin/components/CMHeaderActions.js +193 -4
 - package/dist/admin/components/CMHeaderActions.js.map +1 -1
 - package/dist/admin/components/CMHeaderActions.mjs +197 -9
 - package/dist/admin/components/CMHeaderActions.mjs.map +1 -1
 - package/dist/admin/components/LocaleListCell.js +65 -45
 - package/dist/admin/components/LocaleListCell.js.map +1 -1
 - package/dist/admin/components/LocaleListCell.mjs +66 -46
 - package/dist/admin/components/LocaleListCell.mjs.map +1 -1
 - package/dist/admin/components/LocalePicker.js +18 -11
 - package/dist/admin/components/LocalePicker.js.map +1 -1
 - package/dist/admin/components/LocalePicker.mjs +19 -12
 - package/dist/admin/components/LocalePicker.mjs.map +1 -1
 - package/dist/admin/contentManagerHooks/editView.js +6 -3
 - package/dist/admin/contentManagerHooks/editView.js.map +1 -1
 - package/dist/admin/contentManagerHooks/editView.mjs +7 -4
 - package/dist/admin/contentManagerHooks/editView.mjs.map +1 -1
 - package/dist/admin/contentManagerHooks/listView.js +2 -1
 - package/dist/admin/contentManagerHooks/listView.js.map +1 -1
 - package/dist/admin/contentManagerHooks/listView.mjs +2 -1
 - package/dist/admin/contentManagerHooks/listView.mjs.map +1 -1
 - package/dist/admin/hooks/useAILocalizationJobsPolling.js +110 -0
 - package/dist/admin/hooks/useAILocalizationJobsPolling.js.map +1 -0
 - package/dist/admin/hooks/useAILocalizationJobsPolling.mjs +89 -0
 - package/dist/admin/hooks/useAILocalizationJobsPolling.mjs.map +1 -0
 - package/dist/admin/hooks/useI18n.js +4 -4
 - package/dist/admin/hooks/useI18n.js.map +1 -1
 - package/dist/admin/hooks/useI18n.mjs +4 -4
 - package/dist/admin/hooks/useI18n.mjs.map +1 -1
 - package/dist/admin/index.js +1 -0
 - package/dist/admin/index.js.map +1 -1
 - package/dist/admin/index.mjs +2 -1
 - package/dist/admin/index.mjs.map +1 -1
 - package/dist/admin/pages/SettingsPage.js +121 -46
 - package/dist/admin/pages/SettingsPage.js.map +1 -1
 - package/dist/admin/pages/SettingsPage.mjs +124 -30
 - package/dist/admin/pages/SettingsPage.mjs.map +1 -1
 - package/dist/admin/services/aiLocalizationJobs.js +26 -0
 - package/dist/admin/services/aiLocalizationJobs.js.map +1 -0
 - package/dist/admin/services/aiLocalizationJobs.mjs +24 -0
 - package/dist/admin/services/aiLocalizationJobs.mjs.map +1 -0
 - package/dist/admin/services/api.js +3 -1
 - package/dist/admin/services/api.js.map +1 -1
 - package/dist/admin/services/api.mjs +3 -1
 - package/dist/admin/services/api.mjs.map +1 -1
 - package/dist/admin/services/settings.js +29 -0
 - package/dist/admin/services/settings.js.map +1 -0
 - package/dist/admin/services/settings.mjs +26 -0
 - package/dist/admin/services/settings.mjs.map +1 -0
 - package/dist/admin/src/components/CMHeaderActions.d.ts +17 -4
 - package/dist/admin/src/components/LocaleListCell.d.ts +2 -1
 - package/dist/admin/src/hooks/useAILocalizationJobsPolling.d.ts +9 -0
 - package/dist/admin/src/services/aiLocalizationJobs.d.ts +6 -0
 - package/dist/admin/src/services/api.d.ts +1 -1
 - package/dist/admin/src/services/locales.d.ts +1 -1
 - package/dist/admin/src/services/relations.d.ts +1 -1
 - package/dist/admin/src/services/settings.d.ts +5 -0
 - package/dist/admin/translations/en.json.js +10 -0
 - package/dist/admin/translations/en.json.js.map +1 -1
 - package/dist/admin/translations/en.json.mjs +10 -0
 - package/dist/admin/translations/en.json.mjs.map +1 -1
 - package/dist/admin/utils/clean.js +2 -2
 - package/dist/admin/utils/clean.js.map +1 -1
 - package/dist/admin/utils/clean.mjs +2 -2
 - package/dist/admin/utils/clean.mjs.map +1 -1
 - package/dist/server/bootstrap.js +2 -0
 - package/dist/server/bootstrap.js.map +1 -1
 - package/dist/server/bootstrap.mjs +2 -0
 - package/dist/server/bootstrap.mjs.map +1 -1
 - package/dist/server/constants/iso-locales.json.js +4 -0
 - package/dist/server/constants/iso-locales.json.js.map +1 -1
 - package/dist/server/constants/iso-locales.json.mjs +4 -0
 - package/dist/server/constants/iso-locales.json.mjs.map +1 -1
 - package/dist/server/controllers/ai-localization-jobs.js +47 -0
 - package/dist/server/controllers/ai-localization-jobs.js.map +1 -0
 - package/dist/server/controllers/ai-localization-jobs.mjs +45 -0
 - package/dist/server/controllers/ai-localization-jobs.mjs.map +1 -0
 - package/dist/server/controllers/index.js +5 -1
 - package/dist/server/controllers/index.js.map +1 -1
 - package/dist/server/controllers/index.mjs +5 -1
 - package/dist/server/controllers/index.mjs.map +1 -1
 - package/dist/server/controllers/settings.js +24 -0
 - package/dist/server/controllers/settings.js.map +1 -0
 - package/dist/server/controllers/settings.mjs +22 -0
 - package/dist/server/controllers/settings.mjs.map +1 -0
 - package/dist/server/models/ai-localization-job.js +60 -0
 - package/dist/server/models/ai-localization-job.js.map +1 -0
 - package/dist/server/models/ai-localization-job.mjs +57 -0
 - package/dist/server/models/ai-localization-job.mjs.map +1 -0
 - package/dist/server/register.js +3 -1
 - package/dist/server/register.js.map +1 -1
 - package/dist/server/register.mjs +3 -1
 - package/dist/server/register.mjs.map +1 -1
 - package/dist/server/routes/admin.js +40 -0
 - package/dist/server/routes/admin.js.map +1 -1
 - package/dist/server/routes/admin.mjs +40 -0
 - package/dist/server/routes/admin.mjs.map +1 -1
 - package/dist/server/services/ai-localization-jobs.js +64 -0
 - package/dist/server/services/ai-localization-jobs.js.map +1 -0
 - package/dist/server/services/ai-localization-jobs.mjs +62 -0
 - package/dist/server/services/ai-localization-jobs.mjs.map +1 -0
 - package/dist/server/services/ai-localizations.js +253 -5
 - package/dist/server/services/ai-localizations.js.map +1 -1
 - package/dist/server/services/ai-localizations.mjs +253 -5
 - package/dist/server/services/ai-localizations.mjs.map +1 -1
 - package/dist/server/services/index.js +5 -1
 - package/dist/server/services/index.js.map +1 -1
 - package/dist/server/services/index.mjs +5 -1
 - package/dist/server/services/index.mjs.map +1 -1
 - package/dist/server/services/metrics.js +12 -1
 - package/dist/server/services/metrics.js.map +1 -1
 - package/dist/server/services/metrics.mjs +12 -1
 - package/dist/server/services/metrics.mjs.map +1 -1
 - package/dist/server/services/settings.js +25 -0
 - package/dist/server/services/settings.js.map +1 -0
 - package/dist/server/services/settings.mjs +23 -0
 - package/dist/server/services/settings.mjs.map +1 -0
 - package/dist/server/src/bootstrap.d.ts.map +1 -1
 - package/dist/server/src/controllers/ai-localization-jobs.d.ts +17 -0
 - package/dist/server/src/controllers/ai-localization-jobs.d.ts.map +1 -0
 - package/dist/server/src/controllers/index.d.ts +10 -0
 - package/dist/server/src/controllers/index.d.ts.map +1 -1
 - package/dist/server/src/controllers/settings.d.ts +7 -0
 - package/dist/server/src/controllers/settings.d.ts.map +1 -0
 - package/dist/server/src/index.d.ts +41 -2
 - package/dist/server/src/index.d.ts.map +1 -1
 - package/dist/server/src/models/ai-localization-job.d.ts +5 -0
 - package/dist/server/src/models/ai-localization-job.d.ts.map +1 -0
 - package/dist/server/src/models/index.d.ts +5 -0
 - package/dist/server/src/models/index.d.ts.map +1 -0
 - package/dist/server/src/register.d.ts +1 -1
 - package/dist/server/src/register.d.ts.map +1 -1
 - package/dist/server/src/routes/admin.d.ts.map +1 -1
 - package/dist/server/src/services/ai-localization-jobs.d.ts +26 -0
 - package/dist/server/src/services/ai-localization-jobs.d.ts.map +1 -0
 - package/dist/server/src/services/ai-localizations.d.ts +11 -1
 - package/dist/server/src/services/ai-localizations.d.ts.map +1 -1
 - package/dist/server/src/services/index.d.ts +30 -1
 - package/dist/server/src/services/index.d.ts.map +1 -1
 - package/dist/server/src/services/metrics.d.ts +1 -0
 - package/dist/server/src/services/metrics.d.ts.map +1 -1
 - package/dist/server/src/services/settings.d.ts +13 -0
 - package/dist/server/src/services/settings.d.ts.map +1 -0
 - package/dist/server/src/utils/index.d.ts +7 -1
 - package/dist/server/src/utils/index.d.ts.map +1 -1
 - package/dist/server/src/validation/settings.d.ts +12 -0
 - package/dist/server/src/validation/settings.d.ts.map +1 -0
 - package/dist/server/utils/index.js.map +1 -1
 - package/dist/server/utils/index.mjs.map +1 -1
 - package/dist/server/validation/settings.js +11 -0
 - package/dist/server/validation/settings.js.map +1 -0
 - package/dist/server/validation/settings.mjs +9 -0
 - package/dist/server/validation/settings.mjs.map +1 -0
 - package/dist/shared/contracts/ai-localization-jobs.d.ts +27 -0
 - package/dist/shared/contracts/ai-localization-jobs.d.ts.map +1 -0
 - package/dist/shared/contracts/settings.d.ts +40 -0
 - package/dist/shared/contracts/shared.d.ts.map +1 -0
 - package/package.json +8 -6
 
| 
         @@ -4,15 +4,19 @@ var jsxRuntime = require('react/jsx-runtime'); 
     | 
|
| 
       4 
4 
     | 
    
         
             
            var React = require('react');
         
     | 
| 
       5 
5 
     | 
    
         
             
            var query = require('@reduxjs/toolkit/query');
         
     | 
| 
       6 
6 
     | 
    
         
             
            var strapiAdmin = require('@strapi/admin/strapi-admin');
         
     | 
| 
      
 7 
     | 
    
         
            +
            var ee = require('@strapi/admin/strapi-admin/ee');
         
     | 
| 
       7 
8 
     | 
    
         
             
            var strapiAdmin$1 = require('@strapi/content-manager/strapi-admin');
         
     | 
| 
       8 
9 
     | 
    
         
             
            var designSystem = require('@strapi/design-system');
         
     | 
| 
       9 
10 
     | 
    
         
             
            var icons = require('@strapi/icons');
         
     | 
| 
       10 
11 
     | 
    
         
             
            var reactIntl = require('react-intl');
         
     | 
| 
       11 
12 
     | 
    
         
             
            var reactRouterDom = require('react-router-dom');
         
     | 
| 
       12 
13 
     | 
    
         
             
            var styledComponents = require('styled-components');
         
     | 
| 
      
 14 
     | 
    
         
            +
            var useAILocalizationJobsPolling = require('../hooks/useAILocalizationJobsPolling.js');
         
     | 
| 
       13 
15 
     | 
    
         
             
            var useI18n = require('../hooks/useI18n.js');
         
     | 
| 
      
 16 
     | 
    
         
            +
            var aiLocalizationJobs = require('../services/aiLocalizationJobs.js');
         
     | 
| 
       14 
17 
     | 
    
         
             
            var locales = require('../services/locales.js');
         
     | 
| 
       15 
18 
     | 
    
         
             
            var relations = require('../services/relations.js');
         
     | 
| 
      
 19 
     | 
    
         
            +
            var settings = require('../services/settings.js');
         
     | 
| 
       16 
20 
     | 
    
         
             
            var clean = require('../utils/clean.js');
         
     | 
| 
       17 
21 
     | 
    
         
             
            var getTranslation = require('../utils/getTranslation.js');
         
     | 
| 
       18 
22 
     | 
    
         
             
            var strings = require('../utils/strings.js');
         
     | 
| 
         @@ -81,6 +85,18 @@ const LocaleOption = ({ isDraftAndPublishEnabled, locale, status, entryExists }) 
     | 
|
| 
       81 
85 
     | 
    
         
             
                    ]
         
     | 
| 
       82 
86 
     | 
    
         
             
                });
         
     | 
| 
       83 
87 
     | 
    
         
             
            };
         
     | 
| 
      
 88 
     | 
    
         
            +
            const LocaleOptionStartIcon = ({ entryWithLocaleExists, translationStatus, index })=>{
         
     | 
| 
      
 89 
     | 
    
         
            +
                const isAiAvailable = ee.useAIAvailability();
         
     | 
| 
      
 90 
     | 
    
         
            +
                if (!entryWithLocaleExists) {
         
     | 
| 
      
 91 
     | 
    
         
            +
                    return /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {});
         
     | 
| 
      
 92 
     | 
    
         
            +
                }
         
     | 
| 
      
 93 
     | 
    
         
            +
                if (isAiAvailable && index !== 0 && translationStatus === 'failed') {
         
     | 
| 
      
 94 
     | 
    
         
            +
                    return /*#__PURE__*/ jsxRuntime.jsx(icons.WarningCircle, {
         
     | 
| 
      
 95 
     | 
    
         
            +
                        fill: "warning600"
         
     | 
| 
      
 96 
     | 
    
         
            +
                    });
         
     | 
| 
      
 97 
     | 
    
         
            +
                }
         
     | 
| 
      
 98 
     | 
    
         
            +
                return null;
         
     | 
| 
      
 99 
     | 
    
         
            +
            };
         
     | 
| 
       84 
100 
     | 
    
         
             
            const LocalePickerAction = ({ document, meta, model, collectionType, documentId })=>{
         
     | 
| 
       85 
101 
     | 
    
         
             
                const { formatMessage } = reactIntl.useIntl();
         
     | 
| 
       86 
102 
     | 
    
         
             
                const [{ query }, setQuery] = strapiAdmin.useQueryParams();
         
     | 
| 
         @@ -95,6 +111,13 @@ const LocalePickerAction = ({ document, meta, model, collectionType, documentId 
     | 
|
| 
       95 
111 
     | 
    
         
             
                        locale: currentDesiredLocale
         
     | 
| 
       96 
112 
     | 
    
         
             
                    }
         
     | 
| 
       97 
113 
     | 
    
         
             
                });
         
     | 
| 
      
 114 
     | 
    
         
            +
                const { data: jobData } = aiLocalizationJobs.useGetAILocalizationJobsByDocumentQuery({
         
     | 
| 
      
 115 
     | 
    
         
            +
                    documentId: documentId,
         
     | 
| 
      
 116 
     | 
    
         
            +
                    model: model,
         
     | 
| 
      
 117 
     | 
    
         
            +
                    collectionType: collectionType
         
     | 
| 
      
 118 
     | 
    
         
            +
                });
         
     | 
| 
      
 119 
     | 
    
         
            +
                const { data: settings$1 } = settings.useGetSettingsQuery();
         
     | 
| 
      
 120 
     | 
    
         
            +
                const isAiAvailable = ee.useAIAvailability();
         
     | 
| 
       98 
121 
     | 
    
         
             
                const handleSelect = React__namespace.useCallback((value)=>{
         
     | 
| 
       99 
122 
     | 
    
         
             
                    setQuery({
         
     | 
| 
       100 
123 
     | 
    
         
             
                        plugins: {
         
     | 
| 
         @@ -127,12 +150,18 @@ const LocalePickerAction = ({ document, meta, model, collectionType, documentId 
     | 
|
| 
       127 
150 
     | 
    
         
             
                    currentDesiredLocale
         
     | 
| 
       128 
151 
     | 
    
         
             
                ]);
         
     | 
| 
       129 
152 
     | 
    
         
             
                const currentLocale = Array.isArray(locales$1) ? locales$1.find((locale)=>locale.code === currentDesiredLocale) : undefined;
         
     | 
| 
      
 153 
     | 
    
         
            +
                // Use meta.availableLocales instead of document.localizations
         
     | 
| 
      
 154 
     | 
    
         
            +
                // meta.availableLocales contains all locales for the document, even when creating new locales
         
     | 
| 
      
 155 
     | 
    
         
            +
                const availableLocales = meta?.availableLocales ?? [];
         
     | 
| 
      
 156 
     | 
    
         
            +
                const documentLocalizations = document?.localizations ?? [];
         
     | 
| 
      
 157 
     | 
    
         
            +
                // Prefer meta.availableLocales as it's more reliable, fallback to document.localizations
         
     | 
| 
      
 158 
     | 
    
         
            +
                const allLocalizations = availableLocales.length > 0 ? availableLocales : documentLocalizations;
         
     | 
| 
       130 
159 
     | 
    
         
             
                const allCurrentLocales = [
         
     | 
| 
       131 
160 
     | 
    
         
             
                    {
         
     | 
| 
       132 
161 
     | 
    
         
             
                        status: getDocumentStatus(document, meta),
         
     | 
| 
       133 
162 
     | 
    
         
             
                        locale: currentLocale?.code
         
     | 
| 
       134 
163 
     | 
    
         
             
                    },
         
     | 
| 
       135 
     | 
    
         
            -
                    ... 
     | 
| 
      
 164 
     | 
    
         
            +
                    ...allLocalizations
         
     | 
| 
       136 
165 
     | 
    
         
             
                ];
         
     | 
| 
       137 
166 
     | 
    
         
             
                if (!hasI18n || !Array.isArray(locales$1) || locales$1.length === 0) {
         
     | 
| 
       138 
167 
     | 
    
         
             
                    return null;
         
     | 
| 
         @@ -143,15 +172,52 @@ const LocalePickerAction = ({ document, meta, model, collectionType, documentId 
     | 
|
| 
       143 
172 
     | 
    
         
             
                 * otherwise the locale is hidden.
         
     | 
| 
       144 
173 
     | 
    
         
             
                 */ return canRead.includes(locale.code);
         
     | 
| 
       145 
174 
     | 
    
         
             
                });
         
     | 
| 
      
 175 
     | 
    
         
            +
                const localesSortingDefaultFirst = displayedLocales.sort((a, b)=>a.isDefault ? -1 : b.isDefault ? 1 : 0);
         
     | 
| 
       146 
176 
     | 
    
         
             
                return {
         
     | 
| 
       147 
177 
     | 
    
         
             
                    label: formatMessage({
         
     | 
| 
       148 
178 
     | 
    
         
             
                        id: getTranslation.getTranslation('Settings.locales.modal.locales.label'),
         
     | 
| 
       149 
179 
     | 
    
         
             
                        defaultMessage: 'Locales'
         
     | 
| 
       150 
180 
     | 
    
         
             
                    }),
         
     | 
| 
       151 
     | 
    
         
            -
                    options:  
     | 
| 
      
 181 
     | 
    
         
            +
                    options: localesSortingDefaultFirst.map((locale, index)=>{
         
     | 
| 
       152 
182 
     | 
    
         
             
                        const entryWithLocaleExists = allCurrentLocales.some((doc)=>doc.locale === locale.code);
         
     | 
| 
       153 
183 
     | 
    
         
             
                        const currentLocaleDoc = allCurrentLocales.find((doc)=>'locale' in doc ? doc.locale === locale.code : false);
         
     | 
| 
       154 
184 
     | 
    
         
             
                        const permissionsToCheck = currentLocaleDoc ? canRead : canCreate;
         
     | 
| 
      
 185 
     | 
    
         
            +
                        if (isAiAvailable && settings$1?.data?.aiLocalizations) {
         
     | 
| 
      
 186 
     | 
    
         
            +
                            return {
         
     | 
| 
      
 187 
     | 
    
         
            +
                                _render: ()=>/*#__PURE__*/ jsxRuntime.jsxs(React__namespace.Fragment, {
         
     | 
| 
      
 188 
     | 
    
         
            +
                                        children: [
         
     | 
| 
      
 189 
     | 
    
         
            +
                                            /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
         
     | 
| 
      
 190 
     | 
    
         
            +
                                                disabled: !permissionsToCheck.includes(locale.code),
         
     | 
| 
      
 191 
     | 
    
         
            +
                                                startIcon: /*#__PURE__*/ jsxRuntime.jsx(LocaleOptionStartIcon, {
         
     | 
| 
      
 192 
     | 
    
         
            +
                                                    entryWithLocaleExists: entryWithLocaleExists,
         
     | 
| 
      
 193 
     | 
    
         
            +
                                                    translationStatus: jobData?.data?.status,
         
     | 
| 
      
 194 
     | 
    
         
            +
                                                    index: index
         
     | 
| 
      
 195 
     | 
    
         
            +
                                                }),
         
     | 
| 
      
 196 
     | 
    
         
            +
                                                value: locale.code,
         
     | 
| 
      
 197 
     | 
    
         
            +
                                                children: /*#__PURE__*/ jsxRuntime.jsx(LocaleOption, {
         
     | 
| 
      
 198 
     | 
    
         
            +
                                                    isDraftAndPublishEnabled: !!schema?.options?.draftAndPublish,
         
     | 
| 
      
 199 
     | 
    
         
            +
                                                    locale: locale,
         
     | 
| 
      
 200 
     | 
    
         
            +
                                                    status: currentLocaleDoc?.status,
         
     | 
| 
      
 201 
     | 
    
         
            +
                                                    entryExists: entryWithLocaleExists
         
     | 
| 
      
 202 
     | 
    
         
            +
                                                })
         
     | 
| 
      
 203 
     | 
    
         
            +
                                            }, locale.code),
         
     | 
| 
      
 204 
     | 
    
         
            +
                                            localesSortingDefaultFirst.length > 1 && index === 0 && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
         
     | 
| 
      
 205 
     | 
    
         
            +
                                                paddingRight: 4,
         
     | 
| 
      
 206 
     | 
    
         
            +
                                                paddingLeft: 4,
         
     | 
| 
      
 207 
     | 
    
         
            +
                                                paddingTop: 2,
         
     | 
| 
      
 208 
     | 
    
         
            +
                                                paddingBottom: 2,
         
     | 
| 
      
 209 
     | 
    
         
            +
                                                children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
         
     | 
| 
      
 210 
     | 
    
         
            +
                                                    variant: "sigma",
         
     | 
| 
      
 211 
     | 
    
         
            +
                                                    children: formatMessage({
         
     | 
| 
      
 212 
     | 
    
         
            +
                                                        id: getTranslation.getTranslation('CMEditViewLocalePicker.locale.ai-translations'),
         
     | 
| 
      
 213 
     | 
    
         
            +
                                                        defaultMessage: 'AI Translations'
         
     | 
| 
      
 214 
     | 
    
         
            +
                                                    })
         
     | 
| 
      
 215 
     | 
    
         
            +
                                                })
         
     | 
| 
      
 216 
     | 
    
         
            +
                                            })
         
     | 
| 
      
 217 
     | 
    
         
            +
                                        ]
         
     | 
| 
      
 218 
     | 
    
         
            +
                                    }, index)
         
     | 
| 
      
 219 
     | 
    
         
            +
                            };
         
     | 
| 
      
 220 
     | 
    
         
            +
                        }
         
     | 
| 
       155 
221 
     | 
    
         
             
                        return {
         
     | 
| 
       156 
222 
     | 
    
         
             
                            disabled: !permissionsToCheck.includes(locale.code),
         
     | 
| 
       157 
223 
     | 
    
         
             
                            value: locale.code,
         
     | 
| 
         @@ -159,9 +225,12 @@ const LocalePickerAction = ({ document, meta, model, collectionType, documentId 
     | 
|
| 
       159 
225 
     | 
    
         
             
                                isDraftAndPublishEnabled: !!schema?.options?.draftAndPublish,
         
     | 
| 
       160 
226 
     | 
    
         
             
                                locale: locale,
         
     | 
| 
       161 
227 
     | 
    
         
             
                                status: currentLocaleDoc?.status,
         
     | 
| 
       162 
     | 
    
         
            -
                                entryExists: entryWithLocaleExists
         
     | 
| 
      
 228 
     | 
    
         
            +
                                entryExists: entryWithLocaleExists,
         
     | 
| 
      
 229 
     | 
    
         
            +
                                translationStatus: jobData?.data?.status
         
     | 
| 
       163 
230 
     | 
    
         
             
                            }),
         
     | 
| 
       164 
     | 
    
         
            -
                            startIcon:  
     | 
| 
      
 231 
     | 
    
         
            +
                            startIcon: /*#__PURE__*/ jsxRuntime.jsx(LocaleOptionStartIcon, {
         
     | 
| 
      
 232 
     | 
    
         
            +
                                entryWithLocaleExists: entryWithLocaleExists
         
     | 
| 
      
 233 
     | 
    
         
            +
                            })
         
     | 
| 
       165 
234 
     | 
    
         
             
                        };
         
     | 
| 
       166 
235 
     | 
    
         
             
                    }),
         
     | 
| 
       167 
236 
     | 
    
         
             
                    customizeContent: ()=>currentLocale?.name,
         
     | 
| 
         @@ -184,6 +253,118 @@ const getDocumentStatus = (document, meta)=>{ 
     | 
|
| 
       184 
253 
     | 
    
         
             
                }
         
     | 
| 
       185 
254 
     | 
    
         
             
                return docStatus;
         
     | 
| 
       186 
255 
     | 
    
         
             
            };
         
     | 
| 
      
 256 
     | 
    
         
            +
            /* -------------------------------------------------------------------------------------------------
         
     | 
| 
      
 257 
     | 
    
         
            +
             * AISettingsStatusAction
         
     | 
| 
      
 258 
     | 
    
         
            +
             * -----------------------------------------------------------------------------------------------*/ const AITranslationStatusIcon = styledComponents.styled(designSystem.Status)`
         
     | 
| 
      
 259 
     | 
    
         
            +
              display: flex;
         
     | 
| 
      
 260 
     | 
    
         
            +
              gap: ${({ theme })=>theme.spaces[1]};
         
     | 
| 
      
 261 
     | 
    
         
            +
              justify-content: center;
         
     | 
| 
      
 262 
     | 
    
         
            +
              align-items: center;
         
     | 
| 
      
 263 
     | 
    
         
            +
              height: 100%;
         
     | 
| 
      
 264 
     | 
    
         
            +
             
     | 
| 
      
 265 
     | 
    
         
            +
              // Disabled state
         
     | 
| 
      
 266 
     | 
    
         
            +
              ${({ $isAISettingEnabled, theme })=>!$isAISettingEnabled && `
         
     | 
| 
      
 267 
     | 
    
         
            +
                background-color: ${theme.colors.neutral150};
         
     | 
| 
      
 268 
     | 
    
         
            +
              `}
         
     | 
| 
      
 269 
     | 
    
         
            +
             
     | 
| 
      
 270 
     | 
    
         
            +
              svg {
         
     | 
| 
      
 271 
     | 
    
         
            +
                ${({ $isAISettingEnabled, theme })=>!$isAISettingEnabled && `
         
     | 
| 
      
 272 
     | 
    
         
            +
                    fill: ${theme.colors.neutral300};
         
     | 
| 
      
 273 
     | 
    
         
            +
                  `}
         
     | 
| 
      
 274 
     | 
    
         
            +
              }
         
     | 
| 
      
 275 
     | 
    
         
            +
            `;
         
     | 
| 
      
 276 
     | 
    
         
            +
            const AITranslationStatusAction = ({ documentId, model, collectionType })=>{
         
     | 
| 
      
 277 
     | 
    
         
            +
                const { formatMessage } = reactIntl.useIntl();
         
     | 
| 
      
 278 
     | 
    
         
            +
                const isAIAvailable = ee.useAIAvailability();
         
     | 
| 
      
 279 
     | 
    
         
            +
                const { data: settings$1 } = settings.useGetSettingsQuery();
         
     | 
| 
      
 280 
     | 
    
         
            +
                const isAISettingEnabled = settings$1?.data?.aiLocalizations;
         
     | 
| 
      
 281 
     | 
    
         
            +
                const { hasI18n } = useI18n.useI18n();
         
     | 
| 
      
 282 
     | 
    
         
            +
                // Poll for AI localizations jobs when AI is enabled and we have a documentId
         
     | 
| 
      
 283 
     | 
    
         
            +
                const { status } = useAILocalizationJobsPolling.useAILocalizationJobsPolling({
         
     | 
| 
      
 284 
     | 
    
         
            +
                    documentId,
         
     | 
| 
      
 285 
     | 
    
         
            +
                    model,
         
     | 
| 
      
 286 
     | 
    
         
            +
                    collectionType
         
     | 
| 
      
 287 
     | 
    
         
            +
                });
         
     | 
| 
      
 288 
     | 
    
         
            +
                const statusVariant = (()=>{
         
     | 
| 
      
 289 
     | 
    
         
            +
                    if (status === 'failed') {
         
     | 
| 
      
 290 
     | 
    
         
            +
                        return 'warning';
         
     | 
| 
      
 291 
     | 
    
         
            +
                    }
         
     | 
| 
      
 292 
     | 
    
         
            +
                    if (isAISettingEnabled) {
         
     | 
| 
      
 293 
     | 
    
         
            +
                        return 'alternative';
         
     | 
| 
      
 294 
     | 
    
         
            +
                    }
         
     | 
| 
      
 295 
     | 
    
         
            +
                    return 'neutral';
         
     | 
| 
      
 296 
     | 
    
         
            +
                })();
         
     | 
| 
      
 297 
     | 
    
         
            +
                // Do not display this action when i18n is not available
         
     | 
| 
      
 298 
     | 
    
         
            +
                if (!hasI18n) {
         
     | 
| 
      
 299 
     | 
    
         
            +
                    return null;
         
     | 
| 
      
 300 
     | 
    
         
            +
                }
         
     | 
| 
      
 301 
     | 
    
         
            +
                // Do not display this action when AI is not available
         
     | 
| 
      
 302 
     | 
    
         
            +
                if (!isAIAvailable) {
         
     | 
| 
      
 303 
     | 
    
         
            +
                    return null;
         
     | 
| 
      
 304 
     | 
    
         
            +
                }
         
     | 
| 
      
 305 
     | 
    
         
            +
                return {
         
     | 
| 
      
 306 
     | 
    
         
            +
                    _status: {
         
     | 
| 
      
 307 
     | 
    
         
            +
                        message: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
         
     | 
| 
      
 308 
     | 
    
         
            +
                            height: "100%",
         
     | 
| 
      
 309 
     | 
    
         
            +
                            "aria-label": formatMessage({
         
     | 
| 
      
 310 
     | 
    
         
            +
                                id: getTranslation.getTranslation('CMEditViewAITranslation.status-aria-label'),
         
     | 
| 
      
 311 
     | 
    
         
            +
                                defaultMessage: 'AI Translation Status'
         
     | 
| 
      
 312 
     | 
    
         
            +
                            }),
         
     | 
| 
      
 313 
     | 
    
         
            +
                            children: /*#__PURE__*/ jsxRuntime.jsx(AITranslationStatusIcon, {
         
     | 
| 
      
 314 
     | 
    
         
            +
                                $isAISettingEnabled: Boolean(isAISettingEnabled),
         
     | 
| 
      
 315 
     | 
    
         
            +
                                variant: statusVariant,
         
     | 
| 
      
 316 
     | 
    
         
            +
                                size: "S",
         
     | 
| 
      
 317 
     | 
    
         
            +
                                children: /*#__PURE__*/ jsxRuntime.jsx(icons.Sparkle, {})
         
     | 
| 
      
 318 
     | 
    
         
            +
                            })
         
     | 
| 
      
 319 
     | 
    
         
            +
                        }),
         
     | 
| 
      
 320 
     | 
    
         
            +
                        tooltip: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
         
     | 
| 
      
 321 
     | 
    
         
            +
                            direction: "column",
         
     | 
| 
      
 322 
     | 
    
         
            +
                            padding: 4,
         
     | 
| 
      
 323 
     | 
    
         
            +
                            alignItems: "flex-start",
         
     | 
| 
      
 324 
     | 
    
         
            +
                            width: "25rem",
         
     | 
| 
      
 325 
     | 
    
         
            +
                            children: [
         
     | 
| 
      
 326 
     | 
    
         
            +
                                /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
         
     | 
| 
      
 327 
     | 
    
         
            +
                                    variant: "pi",
         
     | 
| 
      
 328 
     | 
    
         
            +
                                    fontWeight: "600",
         
     | 
| 
      
 329 
     | 
    
         
            +
                                    children: formatMessage({
         
     | 
| 
      
 330 
     | 
    
         
            +
                                        id: getTranslation.getTranslation('CMEditViewAITranslation.status-title'),
         
     | 
| 
      
 331 
     | 
    
         
            +
                                        defaultMessage: '{enabled, select, true {AI translation enabled} false {AI translation disabled} other {AI translation disabled}}'
         
     | 
| 
      
 332 
     | 
    
         
            +
                                    }, {
         
     | 
| 
      
 333 
     | 
    
         
            +
                                        enabled: isAISettingEnabled
         
     | 
| 
      
 334 
     | 
    
         
            +
                                    })
         
     | 
| 
      
 335 
     | 
    
         
            +
                                }),
         
     | 
| 
      
 336 
     | 
    
         
            +
                                /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
         
     | 
| 
      
 337 
     | 
    
         
            +
                                    variant: "pi",
         
     | 
| 
      
 338 
     | 
    
         
            +
                                    paddingTop: 1,
         
     | 
| 
      
 339 
     | 
    
         
            +
                                    paddingBottom: 3,
         
     | 
| 
      
 340 
     | 
    
         
            +
                                    children: formatMessage({
         
     | 
| 
      
 341 
     | 
    
         
            +
                                        id: getTranslation.getTranslation('CMEditViewAITranslation.status-description'),
         
     | 
| 
      
 342 
     | 
    
         
            +
                                        defaultMessage: 'Our AI translates content in all locales each time you save a modification in the default locale.'
         
     | 
| 
      
 343 
     | 
    
         
            +
                                    })
         
     | 
| 
      
 344 
     | 
    
         
            +
                                }),
         
     | 
| 
      
 345 
     | 
    
         
            +
                                /*#__PURE__*/ jsxRuntime.jsx(designSystem.Link, {
         
     | 
| 
      
 346 
     | 
    
         
            +
                                    fontSize: "inherit",
         
     | 
| 
      
 347 
     | 
    
         
            +
                                    tag: reactRouterDom.NavLink,
         
     | 
| 
      
 348 
     | 
    
         
            +
                                    to: "/settings/internationalization",
         
     | 
| 
      
 349 
     | 
    
         
            +
                                    style: {
         
     | 
| 
      
 350 
     | 
    
         
            +
                                        alignSelf: 'flex-end'
         
     | 
| 
      
 351 
     | 
    
         
            +
                                    },
         
     | 
| 
      
 352 
     | 
    
         
            +
                                    children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
         
     | 
| 
      
 353 
     | 
    
         
            +
                                        variant: "pi",
         
     | 
| 
      
 354 
     | 
    
         
            +
                                        textAlign: "right",
         
     | 
| 
      
 355 
     | 
    
         
            +
                                        children: formatMessage({
         
     | 
| 
      
 356 
     | 
    
         
            +
                                            id: getTranslation.getTranslation('CMEditViewAITranslation.settings-link'),
         
     | 
| 
      
 357 
     | 
    
         
            +
                                            defaultMessage: '{enabled, select, true {Disable it in settings} false {Enable it in settings} other {Enable it in settings}}'
         
     | 
| 
      
 358 
     | 
    
         
            +
                                        }, {
         
     | 
| 
      
 359 
     | 
    
         
            +
                                            enabled: isAISettingEnabled
         
     | 
| 
      
 360 
     | 
    
         
            +
                                        })
         
     | 
| 
      
 361 
     | 
    
         
            +
                                    })
         
     | 
| 
      
 362 
     | 
    
         
            +
                                })
         
     | 
| 
      
 363 
     | 
    
         
            +
                            ]
         
     | 
| 
      
 364 
     | 
    
         
            +
                        })
         
     | 
| 
      
 365 
     | 
    
         
            +
                    }
         
     | 
| 
      
 366 
     | 
    
         
            +
                };
         
     | 
| 
      
 367 
     | 
    
         
            +
            };
         
     | 
| 
       187 
368 
     | 
    
         
             
            /* -------------------------------------------------------------------------------------------------
         
     | 
| 
       188 
369 
     | 
    
         
             
             * FillFromAnotherLocaleAction
         
     | 
| 
       189 
370 
     | 
    
         
             
             * -----------------------------------------------------------------------------------------------*/ const FillFromAnotherLocaleAction = ({ documentId, meta, model, collectionType })=>{
         
     | 
| 
         @@ -203,6 +384,9 @@ const getDocumentStatus = (document, meta)=>{ 
     | 
|
| 
       203 
384 
     | 
    
         
             
                    }
         
     | 
| 
       204 
385 
     | 
    
         
             
                });
         
     | 
| 
       205 
386 
     | 
    
         
             
                const { data: locales$1 = [] } = locales.useGetLocalesQuery();
         
     | 
| 
      
 387 
     | 
    
         
            +
                const isAIAvailable = ee.useAIAvailability();
         
     | 
| 
      
 388 
     | 
    
         
            +
                const { data: settings$1 } = settings.useGetSettingsQuery();
         
     | 
| 
      
 389 
     | 
    
         
            +
                const isAISettingEnabled = settings$1?.data?.aiLocalizations;
         
     | 
| 
       206 
390 
     | 
    
         
             
                const availableLocales = Array.isArray(locales$1) ? locales$1.filter((locale)=>meta?.availableLocales.some((l)=>l.locale === locale.code)) : [];
         
     | 
| 
       207 
391 
     | 
    
         
             
                const fillFromLocale = (onClose)=>async ()=>{
         
     | 
| 
       208 
392 
     | 
    
         
             
                        const response = await getDocument({
         
     | 
| 
         @@ -224,6 +408,10 @@ const getDocumentStatus = (document, meta)=>{ 
     | 
|
| 
       224 
408 
     | 
    
         
             
                if (!hasI18n) {
         
     | 
| 
       225 
409 
     | 
    
         
             
                    return null;
         
     | 
| 
       226 
410 
     | 
    
         
             
                }
         
     | 
| 
      
 411 
     | 
    
         
            +
                // Do not display this action when AI is available and AI translations are enabled
         
     | 
| 
      
 412 
     | 
    
         
            +
                if (isAIAvailable && isAISettingEnabled) {
         
     | 
| 
      
 413 
     | 
    
         
            +
                    return null;
         
     | 
| 
      
 414 
     | 
    
         
            +
                }
         
     | 
| 
       227 
415 
     | 
    
         
             
                return {
         
     | 
| 
       228 
416 
     | 
    
         
             
                    type: 'icon',
         
     | 
| 
       229 
417 
     | 
    
         
             
                    icon: /*#__PURE__*/ jsxRuntime.jsx(icons.Earth, {}),
         
     | 
| 
         @@ -713,6 +901,7 @@ const getDocumentStatus = (document, meta)=>{ 
     | 
|
| 
       713 
901 
     | 
    
         
             
              }
         
     | 
| 
       714 
902 
     | 
    
         
             
            `;
         
     | 
| 
       715 
903 
     | 
    
         | 
| 
      
 904 
     | 
    
         
            +
            exports.AITranslationStatusAction = AITranslationStatusAction;
         
     | 
| 
       716 
905 
     | 
    
         
             
            exports.BulkLocalePublishAction = BulkLocalePublishAction;
         
     | 
| 
       717 
906 
     | 
    
         
             
            exports.BulkLocaleUnpublishAction = BulkLocaleUnpublishAction;
         
     | 
| 
       718 
907 
     | 
    
         
             
            exports.DeleteLocaleAction = DeleteLocaleAction;
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"CMHeaderActions.js","sources":["../../../admin/src/components/CMHeaderActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { skipToken } from '@reduxjs/toolkit/query';\nimport {\n  useNotification,\n  useQueryParams,\n  Table,\n  useAPIErrorHandler,\n  FormErrors,\n  useForm,\n} from '@strapi/admin/strapi-admin';\nimport {\n  type DocumentActionComponent,\n  type DocumentActionProps,\n  unstable_useDocument as useDocument,\n  unstable_useDocumentActions as useDocumentActions,\n  buildValidParams,\n  HeaderActionProps,\n} from '@strapi/content-manager/strapi-admin';\nimport {\n  Flex,\n  Status,\n  Typography,\n  Button,\n  Modal,\n  Field,\n  SingleSelect,\n  SingleSelectOption,\n  Dialog,\n  type StatusVariant,\n} from '@strapi/design-system';\nimport { WarningCircle, ListPlus, Trash, Earth, Cross, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { useGetManyDraftRelationCountQuery } from '../services/relations';\nimport { cleanData } from '../utils/clean';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { BulkLocaleActionModal } from './BulkLocaleActionModal';\n\nimport type { Locale } from '../../../shared/contracts/locales';\nimport type { I18nBaseQuery } from '../types';\nimport type { Modules } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * LocalePickerAction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LocaleOptionProps {\n  isDraftAndPublishEnabled: boolean;\n  locale: Locale;\n  status: 'draft' | 'published' | 'modified';\n  entryExists: boolean;\n}\n\nconst statusVariants: Record<LocaleOptionProps['status'], StatusVariant> = {\n  draft: 'secondary',\n  published: 'success',\n  modified: 'alternative',\n};\n\nconst LocaleOption = ({\n  isDraftAndPublishEnabled,\n  locale,\n  status,\n  entryExists,\n}: LocaleOptionProps) => {\n  const { formatMessage } = useIntl();\n\n  if (!entryExists) {\n    return formatMessage(\n      {\n        id: getTranslation('CMEditViewLocalePicker.locale.create'),\n        defaultMessage: 'Create <bold>{locale}</bold> locale',\n      },\n      {\n        bold: (locale: React.ReactNode) => <b>{locale}</b>,\n        locale: locale.name,\n      }\n    );\n  }\n\n  return (\n    <Flex width=\"100%\" gap={1} justifyContent=\"space-between\">\n      <Typography>{locale.name}</Typography>\n      {isDraftAndPublishEnabled ? (\n        <Status\n          display=\"flex\"\n          paddingLeft=\"6px\"\n          paddingRight=\"6px\"\n          paddingTop=\"2px\"\n          paddingBottom=\"2px\"\n          size=\"S\"\n          variant={statusVariants[status]}\n        >\n          <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n            {capitalize(status)}\n          </Typography>\n        </Status>\n      ) : null}\n    </Flex>\n  );\n};\n\nconst LocalePickerAction = ({\n  document,\n  meta,\n  model,\n  collectionType,\n  documentId,\n}: HeaderActionProps) => {\n  const { formatMessage } = useIntl();\n  const [{ query }, setQuery] = useQueryParams<I18nBaseQuery>();\n  const { hasI18n, canCreate, canRead } = useI18n();\n  const { data: locales = [] } = useGetLocalesQuery();\n  const currentDesiredLocale = query.plugins?.i18n?.locale;\n  const { schema } = useDocument({\n    model,\n    collectionType,\n    documentId,\n    params: { locale: currentDesiredLocale },\n  });\n\n  const handleSelect = React.useCallback(\n    (value: string) => {\n      setQuery({\n        plugins: {\n          ...query.plugins,\n          i18n: {\n            locale: value,\n          },\n        },\n      });\n    },\n    [query.plugins, setQuery]\n  );\n\n  React.useEffect(() => {\n    if (!Array.isArray(locales) || !hasI18n) {\n      return;\n    }\n    /**\n     * Handle the case where the current locale query param doesn't exist\n     * in the list of available locales, so we redirect to the default locale.\n     */\n    const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n    const defaultLocale = locales.find((locale) => locale.isDefault);\n    if (!doesLocaleExist && defaultLocale?.code) {\n      handleSelect(defaultLocale.code);\n    }\n  }, [handleSelect, hasI18n, locales, currentDesiredLocale]);\n\n  const currentLocale = Array.isArray(locales)\n    ? locales.find((locale) => locale.code === currentDesiredLocale)\n    : undefined;\n\n  const allCurrentLocales = [\n    { status: getDocumentStatus(document, meta), locale: currentLocale?.code },\n    ...(document?.localizations ?? []),\n  ];\n\n  if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n    return null;\n  }\n\n  const displayedLocales = locales.filter((locale) => {\n    /**\n     * If you can read we allow you to see the locale exists\n     * otherwise the locale is hidden.\n     */\n    return canRead.includes(locale.code);\n  });\n\n  return {\n    label: formatMessage({\n      id: getTranslation('Settings.locales.modal.locales.label'),\n      defaultMessage: 'Locales',\n    }),\n    options: displayedLocales.map((locale) => {\n      const entryWithLocaleExists = allCurrentLocales.some((doc) => doc.locale === locale.code);\n\n      const currentLocaleDoc = allCurrentLocales.find((doc) =>\n        'locale' in doc ? doc.locale === locale.code : false\n      );\n\n      const permissionsToCheck = currentLocaleDoc ? canRead : canCreate;\n\n      return {\n        disabled: !permissionsToCheck.includes(locale.code),\n        value: locale.code,\n        label: (\n          <LocaleOption\n            isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n            locale={locale}\n            status={currentLocaleDoc?.status}\n            entryExists={entryWithLocaleExists}\n          />\n        ),\n        startIcon: !entryWithLocaleExists ? <Plus /> : null,\n      };\n    }),\n    customizeContent: () => currentLocale?.name,\n    onSelect: handleSelect,\n    value: currentLocale,\n  };\n};\n\ntype UseDocument = typeof useDocument;\n\nconst getDocumentStatus = (\n  document: ReturnType<UseDocument>['document'],\n  meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n  const docStatus = document?.status;\n  const statuses = meta?.availableStatus ?? [];\n\n  /**\n   * Creating an entry\n   */\n  if (!docStatus) {\n    return 'draft';\n  }\n\n  /**\n   * We're viewing a draft, but the document could have a published version\n   */\n  if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n    return 'published';\n  }\n\n  return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FillFromAnotherLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst FillFromAnotherLocaleAction = ({\n  documentId,\n  meta,\n  model,\n  collectionType,\n}: HeaderActionProps) => {\n  const { formatMessage } = useIntl();\n  const [{ query }] = useQueryParams<I18nBaseQuery>();\n  const { hasI18n } = useI18n();\n  const currentDesiredLocale = query.plugins?.i18n?.locale;\n  const [localeSelected, setLocaleSelected] = React.useState<string | null>(null);\n  const setValues = useForm('FillFromAnotherLocale', (state) => state.setValues);\n\n  const { getDocument } = useDocumentActions();\n  const { schema, components } = useDocument({\n    model,\n    documentId,\n    collectionType,\n    params: { locale: currentDesiredLocale },\n  });\n  const { data: locales = [] } = useGetLocalesQuery();\n\n  const availableLocales = Array.isArray(locales)\n    ? locales.filter((locale) => meta?.availableLocales.some((l) => l.locale === locale.code))\n    : [];\n\n  const fillFromLocale = (onClose: () => void) => async () => {\n    const response = await getDocument({\n      collectionType,\n      model,\n      documentId,\n      params: { locale: localeSelected },\n    });\n    if (!response || !schema) {\n      return;\n    }\n\n    const { data } = response;\n\n    const cleanedData = cleanData(data, schema, components);\n\n    setValues(cleanedData);\n\n    onClose();\n  };\n\n  if (!hasI18n) {\n    return null;\n  }\n\n  return {\n    type: 'icon',\n    icon: <Earth />,\n    disabled: availableLocales.length === 0,\n    label: formatMessage({\n      id: getTranslation('CMEditViewCopyLocale.copy-text'),\n      defaultMessage: 'Fill in from another locale',\n    }),\n    dialog: {\n      type: 'dialog',\n      title: formatMessage({\n        id: getTranslation('CMEditViewCopyLocale.dialog.title'),\n        defaultMessage: 'Confirmation',\n      }),\n      content: ({ onClose }: { onClose: () => void }) => (\n        <>\n          <Dialog.Body>\n            <Flex direction=\"column\" gap={3}>\n              <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n              <Typography textAlign=\"center\">\n                {formatMessage({\n                  id: getTranslation('CMEditViewCopyLocale.dialog.body'),\n                  defaultMessage:\n                    'Your current content will be erased and filled by the content of the selected locale:',\n                })}\n              </Typography>\n              <Field.Root width=\"100%\">\n                <Field.Label>\n                  {formatMessage({\n                    id: getTranslation('CMEditViewCopyLocale.dialog.field.label'),\n                    defaultMessage: 'Locale',\n                  })}\n                </Field.Label>\n                <SingleSelect\n                  value={localeSelected}\n                  placeholder={formatMessage({\n                    id: getTranslation('CMEditViewCopyLocale.dialog.field.placeholder'),\n                    defaultMessage: 'Select one locale...',\n                  })}\n                  // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n                  onChange={(value) => setLocaleSelected(value)}\n                >\n                  {availableLocales.map((locale) => (\n                    <SingleSelectOption key={locale.code} value={locale.code}>\n                      {locale.name}\n                    </SingleSelectOption>\n                  ))}\n                </SingleSelect>\n              </Field.Root>\n            </Flex>\n          </Dialog.Body>\n          <Dialog.Footer>\n            <Flex gap={2} width=\"100%\">\n              <Button flex=\"auto\" variant=\"tertiary\" onClick={onClose}>\n                {formatMessage({\n                  id: getTranslation('CMEditViewCopyLocale.cancel-text'),\n                  defaultMessage: 'No, cancel',\n                })}\n              </Button>\n              <Button flex=\"auto\" variant=\"success\" onClick={fillFromLocale(onClose)}>\n                {formatMessage({\n                  id: getTranslation('CMEditViewCopyLocale.submit-text'),\n                  defaultMessage: 'Yes, fill in',\n                })}\n              </Button>\n            </Flex>\n          </Dialog.Footer>\n        </>\n      ),\n    },\n  };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeleteLocaleAction: DocumentActionComponent = ({\n  document,\n  documentId,\n  model,\n  collectionType,\n}) => {\n  const { formatMessage } = useIntl();\n  const navigate = useNavigate();\n  const { toggleNotification } = useNotification();\n  const { delete: deleteAction, isLoading } = useDocumentActions();\n  const { hasI18n, canDelete } = useI18n();\n\n  // Get the current locale object, using the URL instead of document so it works while creating\n  const [{ query }] = useQueryParams<I18nBaseQuery>();\n  const { data: locales = [] } = useGetLocalesQuery();\n  const currentDesiredLocale = query.plugins?.i18n?.locale;\n  const locale = !('error' in locales) && locales.find((loc) => loc.code === currentDesiredLocale);\n\n  if (!hasI18n) {\n    return null;\n  }\n\n  return {\n    disabled:\n      (document?.locale && !canDelete.includes(document.locale)) || !document || !document.id,\n    position: ['header', 'table-row'],\n    label: formatMessage(\n      {\n        id: getTranslation('actions.delete.label'),\n        defaultMessage: 'Delete entry ({locale})',\n      },\n      { locale: locale && locale.name }\n    ),\n    icon: <StyledTrash />,\n    variant: 'danger',\n    dialog: {\n      type: 'dialog',\n      title: formatMessage({\n        id: getTranslation('actions.delete.dialog.title'),\n        defaultMessage: 'Confirmation',\n      }),\n      content: (\n        <Flex direction=\"column\" gap={2}>\n          <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n          <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n            {formatMessage({\n              id: getTranslation('actions.delete.dialog.body'),\n              defaultMessage: 'Are you sure?',\n            })}\n          </Typography>\n        </Flex>\n      ),\n      loading: isLoading,\n      onConfirm: async () => {\n        const unableToDelete =\n          // We are unable to delete a collection type without a document ID\n          // & unable to delete generally if there is no document locale\n          (collectionType !== 'single-types' && !documentId) || !document?.locale;\n\n        if (unableToDelete) {\n          console.error(\n            \"You're trying to delete a document without an id or locale, this is likely a bug with Strapi. Please open an issue.\"\n          );\n\n          toggleNotification({\n            message: formatMessage({\n              id: getTranslation('actions.delete.error'),\n              defaultMessage: 'An error occurred while trying to delete the document locale.',\n            }),\n            type: 'danger',\n          });\n\n          return;\n        }\n\n        const res = await deleteAction({\n          documentId,\n          model,\n          collectionType,\n          params: { locale: document.locale },\n        });\n\n        if (!('error' in res)) {\n          navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n        }\n      },\n    },\n  };\n};\n\nexport type LocaleStatus = {\n  locale: string;\n  status: Modules.Documents.Params.PublicationStatus.Kind | 'modified';\n};\n\ninterface ExtendedDocumentActionProps extends DocumentActionProps {\n  action?: 'bulk-publish' | 'bulk-unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleAction\n *\n * This component is used to handle bulk publish and unpublish actions on locales.\n * -----------------------------------------------------------------------------------------------*/\n\nconst BulkLocaleAction: DocumentActionComponent = ({\n  document,\n  documentId,\n  model,\n  collectionType,\n  action,\n}: ExtendedDocumentActionProps) => {\n  const locale = document?.locale ?? null;\n  const [{ query }] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n  const params = React.useMemo(() => buildValidParams(query), [query]);\n  const isOnPublishedTab = query.status === 'published';\n\n  const { formatMessage } = useIntl();\n  const { hasI18n, canPublish } = useI18n();\n  const { toggleNotification } = useNotification();\n  const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n  const [selectedRows, setSelectedRows] = React.useState<any[]>([]);\n  const [isDraftRelationConfirmationOpen, setIsDraftRelationConfirmationOpen] =\n    React.useState<boolean>(false);\n\n  const { publishMany: publishManyAction, unpublishMany: unpublishManyAction } =\n    useDocumentActions();\n\n  const { schema, validate } = useDocument(\n    {\n      model,\n      collectionType,\n      documentId,\n      params: {\n        locale,\n      },\n    },\n    {\n      // No need to fetch the document, the data is already available in the `document` prop\n      skip: true,\n    }\n  );\n\n  const { data: localesMetadata = [] } = useGetLocalesQuery(hasI18n ? undefined : skipToken);\n\n  const headers = [\n    {\n      label: formatMessage({\n        id: 'global.name',\n        defaultMessage: 'Name',\n      }),\n      name: 'name',\n    },\n    {\n      label: formatMessage({\n        id: getTranslation('CMEditViewBulkLocale.status'),\n        defaultMessage: 'Status',\n      }),\n      name: 'status',\n    },\n    {\n      label: formatMessage({\n        id: getTranslation('CMEditViewBulkLocale.publication-status'),\n        defaultMessage: 'Publication Status',\n      }),\n      name: 'publication-status',\n    },\n  ];\n\n  // Extract the rows for the bulk locale publish modal and any validation\n  // errors per locale\n  const [rows, validationErrors] = React.useMemo(() => {\n    if (!document) {\n      return [[], {}];\n    }\n\n    const localizations = document.localizations ?? [];\n\n    // Build the rows for the bulk locale publish modal by combining the current\n    // document with all the available locales from the document meta\n    const locales: LocaleStatus[] = localizations.map((doc: any) => {\n      const { locale, status } = doc;\n      return { locale, status };\n    });\n\n    // Add the current document locale\n    locales.unshift({\n      locale: document.locale,\n      status: document.status,\n    });\n\n    // Build the validation errors for each locale.\n    const allDocuments = [document, ...localizations];\n    const errors = allDocuments.reduce<FormErrors>((errs, document) => {\n      if (!document) {\n        return errs;\n      }\n\n      // Validate each locale entry via the useDocument validate function and store any errors in a dictionary\n      const validation = validate(document as Modules.Documents.AnyDocument);\n      if (validation !== null) {\n        errs[document.locale] = validation;\n      }\n      return errs;\n    }, {});\n\n    return [locales, errors];\n  }, [document, validate]);\n\n  const isBulkPublish = action === 'bulk-publish';\n  const localesForAction = selectedRows.reduce((acc: string[], selectedRow: LocaleStatus) => {\n    const isValidLocale =\n      // Validation errors are irrelevant if we are trying to unpublish\n      !isBulkPublish || !Object.keys(validationErrors).includes(selectedRow.locale);\n\n    const shouldAddLocale = isBulkPublish\n      ? selectedRow.status !== 'published' && isValidLocale\n      : selectedRow.status !== 'draft' && isValidLocale;\n\n    if (shouldAddLocale) {\n      acc.push(selectedRow.locale);\n    }\n\n    return acc;\n  }, []);\n\n  // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n  // see https://www.notion.so/strapi/Count-draft-relations-56901b492efb45ab90d42fe975b32bd8?pvs=4\n  const enableDraftRelationsCount = false;\n  const {\n    data: draftRelationsCount = 0,\n    isLoading: isDraftRelationsLoading,\n    error: isDraftRelationsError,\n  } = useGetManyDraftRelationCountQuery(\n    {\n      model,\n      documentIds: [documentId!],\n      locale: localesForAction,\n    },\n    {\n      skip: !enableDraftRelationsCount || !documentId || localesForAction.length === 0,\n    }\n  );\n\n  React.useEffect(() => {\n    if (isDraftRelationsError) {\n      toggleNotification({\n        type: 'danger',\n        message: formatAPIError(isDraftRelationsError),\n      });\n    }\n  }, [isDraftRelationsError, toggleNotification, formatAPIError]);\n\n  if (!schema?.options?.draftAndPublish) {\n    return null;\n  }\n\n  if (!hasI18n) {\n    return null;\n  }\n\n  if (!documentId) {\n    return null;\n  }\n\n  // This document action can be enabled given that draft and publish and i18n are\n  // enabled and we can publish the current locale.\n\n  const publish = async () => {\n    await publishManyAction({\n      model,\n      documentIds: [documentId],\n      params: {\n        ...params,\n        locale: localesForAction,\n      },\n    });\n\n    setSelectedRows([]);\n  };\n\n  const unpublish = async () => {\n    await unpublishManyAction({\n      model,\n      documentIds: [documentId],\n      params: {\n        ...params,\n        locale: localesForAction,\n      },\n    });\n\n    setSelectedRows([]);\n  };\n\n  const handleAction = async () => {\n    if (draftRelationsCount > 0) {\n      setIsDraftRelationConfirmationOpen(true);\n    } else if (isBulkPublish) {\n      await publish();\n    } else {\n      await unpublish();\n    }\n  };\n\n  if (isDraftRelationConfirmationOpen) {\n    return {\n      label: formatMessage({\n        id: 'app.components.ConfirmDialog.title',\n        defaultMessage: 'Confirmation',\n      }),\n      variant: 'danger',\n      dialog: {\n        onCancel: () => {\n          setIsDraftRelationConfirmationOpen(false);\n        },\n        onConfirm: async () => {\n          await publish();\n\n          setIsDraftRelationConfirmationOpen(false);\n        },\n        type: 'dialog',\n        title: formatMessage({\n          id: getTranslation('actions.publish.dialog.title'),\n          defaultMessage: 'Confirmation',\n        }),\n        content: (\n          <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n            <WarningCircle width=\"2.4rem\" height=\"2.4rem\" fill=\"danger600\" />\n            <Typography textAlign=\"center\">\n              {formatMessage({\n                id: getTranslation('CMEditViewBulkLocale.draft-relation-warning'),\n                defaultMessage:\n                  'Some locales are related to draft entries. Publishing them could leave broken links in your app.',\n              })}\n            </Typography>\n            <Typography textAlign=\"center\">\n              {formatMessage({\n                id: getTranslation('CMEditViewBulkLocale.continue-confirmation'),\n                defaultMessage: 'Are you sure you want to continue?',\n              })}\n            </Typography>\n          </Flex>\n        ),\n      },\n    };\n  }\n\n  const hasPermission = selectedRows\n    .map(({ locale }) => locale)\n    .every((locale) => canPublish.includes(locale));\n\n  return {\n    label: formatMessage({\n      id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n      defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n    }),\n    variant: isBulkPublish ? 'secondary' : 'danger',\n    icon: isBulkPublish ? <ListPlus /> : <Cross />,\n    disabled: isOnPublishedTab || canPublish.length === 0,\n    position: ['panel'],\n    dialog: {\n      type: 'modal',\n      title: formatMessage({\n        id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n        defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n      }),\n      content: () => {\n        return (\n          <Table.Root\n            headers={headers}\n            rows={rows.map((row) => ({\n              ...row,\n              id: row.locale,\n            }))}\n            selectedRows={selectedRows}\n            onSelectedRowsChange={(tableSelectedRows) => setSelectedRows(tableSelectedRows)}\n          >\n            <BulkLocaleActionModal\n              validationErrors={validationErrors}\n              headers={headers}\n              rows={rows}\n              localesMetadata={localesMetadata as Locale[]}\n              action={action ?? 'bulk-publish'}\n            />\n          </Table.Root>\n        );\n      },\n      footer: () => (\n        <Modal.Footer justifyContent=\"flex-end\">\n          <Button\n            loading={isDraftRelationsLoading}\n            disabled={!hasPermission || localesForAction.length === 0}\n            variant=\"default\"\n            onClick={handleAction}\n          >\n            {formatMessage({\n              id: isBulkPublish ? 'app.utils.publish' : 'app.utils.unpublish',\n              defaultMessage: isBulkPublish ? 'Publish' : 'Unpublish',\n            })}\n          </Button>\n        </Modal.Footer>\n      ),\n    },\n  };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocalePublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocalePublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n  return BulkLocaleAction({ action: 'bulk-publish', ...props });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleUnpublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocaleUnpublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n  return BulkLocaleAction({ action: 'bulk-unpublish', ...props });\n};\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledTrash = styled(Trash)`\n  path {\n    fill: currentColor;\n  }\n`;\n\nexport {\n  BulkLocalePublishAction,\n  BulkLocaleUnpublishAction,\n  DeleteLocaleAction,\n  LocalePickerAction,\n  FillFromAnotherLocaleAction,\n};\n"],"names":["statusVariants","draft","published","modified","LocaleOption","isDraftAndPublishEnabled","locale","status","entryExists","formatMessage","useIntl","id","getTranslation","defaultMessage","bold","_jsx","b","name","_jsxs","Flex","width","gap","justifyContent","Typography","Status","display","paddingLeft","paddingRight","paddingTop","paddingBottom","size","variant","tag","fontWeight","capitalize","LocalePickerAction","document","meta","model","collectionType","documentId","query","setQuery","useQueryParams","hasI18n","canCreate","canRead","useI18n","data","locales","useGetLocalesQuery","currentDesiredLocale","plugins","i18n","schema","useDocument","params","handleSelect","React","useCallback","value","useEffect","Array","isArray","doesLocaleExist","find","loc","code","defaultLocale","isDefault","currentLocale","undefined","allCurrentLocales","getDocumentStatus","localizations","length","displayedLocales","filter","includes","label","options","map","entryWithLocaleExists","some","doc","currentLocaleDoc","permissionsToCheck","disabled","draftAndPublish","startIcon","Plus","customizeContent","onSelect","docStatus","statuses","availableStatus","publishedAt","FillFromAnotherLocaleAction","localeSelected","setLocaleSelected","useState","setValues","useForm","state","getDocument","useDocumentActions","components","availableLocales","l","fillFromLocale","onClose","response","cleanedData","cleanData","type","icon","Earth","dialog","title","content","_Fragment","Dialog","Body","direction","WarningCircle","height","fill","textAlign","Field","Root","Label","SingleSelect","placeholder","onChange","SingleSelectOption","Footer","Button","flex","onClick","DeleteLocaleAction","navigate","useNavigate","toggleNotification","useNotification","delete","deleteAction","isLoading","canDelete","position","StyledTrash","loading","onConfirm","unableToDelete","console","error","message","res","pathname","replace","BulkLocaleAction","action","useMemo","buildValidParams","isOnPublishedTab","canPublish","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","selectedRows","setSelectedRows","isDraftRelationConfirmationOpen","setIsDraftRelationConfirmationOpen","publishMany","publishManyAction","unpublishMany","unpublishManyAction","validate","skip","localesMetadata","skipToken","headers","rows","validationErrors","unshift","allDocuments","errors","reduce","errs","validation","isBulkPublish","localesForAction","acc","selectedRow","isValidLocale","Object","keys","shouldAddLocale","push","enableDraftRelationsCount","draftRelationsCount","isDraftRelationsLoading","isDraftRelationsError","useGetManyDraftRelationCountQuery","documentIds","publish","unpublish","handleAction","onCancel","alignItems","hasPermission","every","ListPlus","Cross","Table","row","onSelectedRowsChange","tableSelectedRows","BulkLocaleActionModal","footer","Modal","BulkLocalePublishAction","props","BulkLocaleUnpublishAction","styled","Trash"],"mappings":"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"}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"CMHeaderActions.js","sources":["../../../admin/src/components/CMHeaderActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { skipToken } from '@reduxjs/toolkit/query';\nimport {\n  useNotification,\n  useQueryParams,\n  Table,\n  useAPIErrorHandler,\n  FormErrors,\n  useForm,\n} from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport {\n  type DocumentActionComponent,\n  type DocumentActionProps,\n  unstable_useDocument as useDocument,\n  unstable_useDocumentActions as useDocumentActions,\n  buildValidParams,\n  HeaderActionProps,\n} from '@strapi/content-manager/strapi-admin';\nimport {\n  Flex,\n  Status,\n  Typography,\n  Button,\n  Modal,\n  Field,\n  SingleSelect,\n  SingleSelectOption,\n  Dialog,\n  type StatusVariant,\n  Box,\n  Link,\n} from '@strapi/design-system';\nimport { WarningCircle, ListPlus, Trash, Earth, Cross, Plus, Sparkle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAILocalizationJobsPolling } from '../hooks/useAILocalizationJobsPolling';\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetAILocalizationJobsByDocumentQuery } from '../services/aiLocalizationJobs';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { useGetManyDraftRelationCountQuery } from '../services/relations';\nimport { useGetSettingsQuery } from '../services/settings';\nimport { cleanData } from '../utils/clean';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport { BulkLocaleActionModal } from './BulkLocaleActionModal';\n\nimport type { Locale } from '../../../shared/contracts/locales';\nimport type { I18nBaseQuery } from '../types';\nimport type { Modules } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * LocalePickerAction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LocaleOptionProps {\n  isDraftAndPublishEnabled: boolean;\n  locale: Locale;\n  status: 'draft' | 'published' | 'modified';\n  entryExists: boolean;\n  translationStatus?: 'processing' | 'failed' | 'completed' | undefined;\n}\n\nconst statusVariants: Record<LocaleOptionProps['status'], StatusVariant> = {\n  draft: 'secondary',\n  published: 'success',\n  modified: 'alternative',\n};\n\nconst LocaleOption = ({\n  isDraftAndPublishEnabled,\n  locale,\n  status,\n  entryExists,\n}: LocaleOptionProps) => {\n  const { formatMessage } = useIntl();\n\n  if (!entryExists) {\n    return formatMessage(\n      {\n        id: getTranslation('CMEditViewLocalePicker.locale.create'),\n        defaultMessage: 'Create <bold>{locale}</bold> locale',\n      },\n      {\n        bold: (locale: React.ReactNode) => <b>{locale}</b>,\n        locale: locale.name,\n      }\n    );\n  }\n\n  return (\n    <Flex width=\"100%\" gap={1} justifyContent=\"space-between\">\n      <Typography>{locale.name}</Typography>\n      {isDraftAndPublishEnabled ? (\n        <Status\n          display=\"flex\"\n          paddingLeft=\"6px\"\n          paddingRight=\"6px\"\n          paddingTop=\"2px\"\n          paddingBottom=\"2px\"\n          size=\"S\"\n          variant={statusVariants[status]}\n        >\n          <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n            {capitalize(status)}\n          </Typography>\n        </Status>\n      ) : null}\n    </Flex>\n  );\n};\n\nconst LocaleOptionStartIcon = ({\n  entryWithLocaleExists,\n  translationStatus,\n  index,\n}: {\n  entryWithLocaleExists: boolean;\n  translationStatus?: 'processing' | 'failed' | 'completed' | undefined;\n  index?: number;\n}) => {\n  const isAiAvailable = useAIAvailability();\n\n  if (!entryWithLocaleExists) {\n    return <Plus />;\n  }\n\n  if (isAiAvailable && index !== 0 && translationStatus === 'failed') {\n    return <WarningCircle fill=\"warning600\" />;\n  }\n\n  return null;\n};\n\nconst LocalePickerAction = ({\n  document,\n  meta,\n  model,\n  collectionType,\n  documentId,\n}: HeaderActionProps) => {\n  const { formatMessage } = useIntl();\n  const [{ query }, setQuery] = useQueryParams<I18nBaseQuery>();\n  const { hasI18n, canCreate, canRead } = useI18n();\n  const { data: locales = [] } = useGetLocalesQuery();\n  const currentDesiredLocale = query.plugins?.i18n?.locale;\n  const { schema } = useDocument({\n    model,\n    collectionType,\n    documentId,\n    params: { locale: currentDesiredLocale },\n  });\n  const { data: jobData } = useGetAILocalizationJobsByDocumentQuery({\n    documentId: documentId!,\n    model: model!,\n    collectionType: collectionType!,\n  });\n  const { data: settings } = useGetSettingsQuery();\n  const isAiAvailable = useAIAvailability();\n\n  const handleSelect = React.useCallback(\n    (value: string) => {\n      setQuery({\n        plugins: {\n          ...query.plugins,\n          i18n: {\n            locale: value,\n          },\n        },\n      });\n    },\n    [query.plugins, setQuery]\n  );\n\n  React.useEffect(() => {\n    if (!Array.isArray(locales) || !hasI18n) {\n      return;\n    }\n    /**\n     * Handle the case where the current locale query param doesn't exist\n     * in the list of available locales, so we redirect to the default locale.\n     */\n    const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n    const defaultLocale = locales.find((locale) => locale.isDefault);\n    if (!doesLocaleExist && defaultLocale?.code) {\n      handleSelect(defaultLocale.code);\n    }\n  }, [handleSelect, hasI18n, locales, currentDesiredLocale]);\n\n  const currentLocale = Array.isArray(locales)\n    ? locales.find((locale) => locale.code === currentDesiredLocale)\n    : undefined;\n\n  // Use meta.availableLocales instead of document.localizations\n  // meta.availableLocales contains all locales for the document, even when creating new locales\n  const availableLocales = meta?.availableLocales ?? [];\n  const documentLocalizations = document?.localizations ?? [];\n\n  // Prefer meta.availableLocales as it's more reliable, fallback to document.localizations\n  const allLocalizations = availableLocales.length > 0 ? availableLocales : documentLocalizations;\n\n  const allCurrentLocales = [\n    { status: getDocumentStatus(document, meta), locale: currentLocale?.code },\n    ...allLocalizations,\n  ];\n\n  if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n    return null;\n  }\n\n  const displayedLocales = locales.filter((locale) => {\n    /**\n     * If you can read we allow you to see the locale exists\n     * otherwise the locale is hidden.\n     */\n    return canRead.includes(locale.code);\n  });\n\n  const localesSortingDefaultFirst = displayedLocales.sort((a, b) =>\n    a.isDefault ? -1 : b.isDefault ? 1 : 0\n  );\n\n  return {\n    label: formatMessage({\n      id: getTranslation('Settings.locales.modal.locales.label'),\n      defaultMessage: 'Locales',\n    }),\n    options: localesSortingDefaultFirst.map((locale, index) => {\n      const entryWithLocaleExists = allCurrentLocales.some((doc) => doc.locale === locale.code);\n\n      const currentLocaleDoc = allCurrentLocales.find((doc) =>\n        'locale' in doc ? doc.locale === locale.code : false\n      );\n\n      const permissionsToCheck = currentLocaleDoc ? canRead : canCreate;\n\n      if (isAiAvailable && settings?.data?.aiLocalizations) {\n        return {\n          _render: () => (\n            <React.Fragment key={index}>\n              <SingleSelectOption\n                disabled={!permissionsToCheck.includes(locale.code)}\n                key={locale.code}\n                startIcon={\n                  <LocaleOptionStartIcon\n                    entryWithLocaleExists={entryWithLocaleExists}\n                    translationStatus={jobData?.data?.status}\n                    index={index}\n                  />\n                }\n                value={locale.code}\n              >\n                <LocaleOption\n                  isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n                  locale={locale}\n                  status={currentLocaleDoc?.status}\n                  entryExists={entryWithLocaleExists}\n                />\n              </SingleSelectOption>\n              {localesSortingDefaultFirst.length > 1 && index === 0 && (\n                <Box paddingRight={4} paddingLeft={4} paddingTop={2} paddingBottom={2}>\n                  <Typography variant=\"sigma\">\n                    {formatMessage({\n                      id: getTranslation('CMEditViewLocalePicker.locale.ai-translations'),\n                      defaultMessage: 'AI Translations',\n                    })}\n                  </Typography>\n                </Box>\n              )}\n            </React.Fragment>\n          ),\n        };\n      }\n\n      return {\n        disabled: !permissionsToCheck.includes(locale.code),\n        value: locale.code,\n        label: (\n          <LocaleOption\n            isDraftAndPublishEnabled={!!schema?.options?.draftAndPublish}\n            locale={locale}\n            status={currentLocaleDoc?.status}\n            entryExists={entryWithLocaleExists}\n            translationStatus={jobData?.data?.status}\n          />\n        ),\n        startIcon: <LocaleOptionStartIcon entryWithLocaleExists={entryWithLocaleExists} />,\n      };\n    }),\n    customizeContent: () => currentLocale?.name,\n    onSelect: handleSelect,\n    value: currentLocale,\n  };\n};\n\ntype UseDocument = typeof useDocument;\n\nconst getDocumentStatus = (\n  document: ReturnType<UseDocument>['document'],\n  meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n  const docStatus = document?.status;\n  const statuses = meta?.availableStatus ?? [];\n\n  /**\n   * Creating an entry\n   */\n  if (!docStatus) {\n    return 'draft';\n  }\n\n  /**\n   * We're viewing a draft, but the document could have a published version\n   */\n  if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n    return 'published';\n  }\n\n  return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AISettingsStatusAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst AITranslationStatusIcon = styled(Status)<{ $isAISettingEnabled: boolean }>`\n  display: flex;\n  gap: ${({ theme }) => theme.spaces[1]};\n  justify-content: center;\n  align-items: center;\n  height: 100%;\n\n  // Disabled state\n  ${({ $isAISettingEnabled, theme }) =>\n    !$isAISettingEnabled &&\n    `\n    background-color: ${theme.colors.neutral150};\n  `}\n\n  svg {\n    ${({ $isAISettingEnabled, theme }) =>\n      !$isAISettingEnabled &&\n      `\n        fill: ${theme.colors.neutral300};\n      `}\n  }\n`;\n\nconst AITranslationStatusAction = ({ documentId, model, collectionType }: HeaderActionProps) => {\n  const { formatMessage } = useIntl();\n  const isAIAvailable = useAIAvailability();\n  const { data: settings } = useGetSettingsQuery();\n  const isAISettingEnabled = settings?.data?.aiLocalizations;\n  const { hasI18n } = useI18n();\n\n  // Poll for AI localizations jobs when AI is enabled and we have a documentId\n  const { status } = useAILocalizationJobsPolling({\n    documentId,\n    model,\n    collectionType,\n  });\n  const statusVariant = (() => {\n    if (status === 'failed') {\n      return 'warning';\n    }\n\n    if (isAISettingEnabled) {\n      return 'alternative';\n    }\n\n    return 'neutral';\n  })();\n\n  // Do not display this action when i18n is not available\n  if (!hasI18n) {\n    return null;\n  }\n\n  // Do not display this action when AI is not available\n  if (!isAIAvailable) {\n    return null;\n  }\n\n  return {\n    _status: {\n      message: (\n        <Box\n          height=\"100%\"\n          aria-label={formatMessage({\n            id: getTranslation('CMEditViewAITranslation.status-aria-label'),\n            defaultMessage: 'AI Translation Status',\n          })}\n        >\n          <AITranslationStatusIcon\n            $isAISettingEnabled={Boolean(isAISettingEnabled)}\n            variant={statusVariant}\n            size=\"S\"\n          >\n            <Sparkle />\n          </AITranslationStatusIcon>\n        </Box>\n      ),\n      tooltip: (\n        <Flex direction=\"column\" padding={4} alignItems=\"flex-start\" width=\"25rem\">\n          <Typography variant=\"pi\" fontWeight=\"600\">\n            {formatMessage(\n              {\n                id: getTranslation('CMEditViewAITranslation.status-title'),\n                defaultMessage:\n                  '{enabled, select, true {AI translation enabled} false {AI translation disabled} other {AI translation disabled}}',\n              },\n              { enabled: isAISettingEnabled }\n            )}\n          </Typography>\n          <Typography variant=\"pi\" paddingTop={1} paddingBottom={3}>\n            {formatMessage({\n              id: getTranslation('CMEditViewAITranslation.status-description'),\n              defaultMessage:\n                'Our AI translates content in all locales each time you save a modification in the default locale.',\n            })}\n          </Typography>\n          <Link\n            fontSize=\"inherit\"\n            tag={NavLink}\n            to=\"/settings/internationalization\"\n            style={{ alignSelf: 'flex-end' }}\n          >\n            <Typography variant=\"pi\" textAlign=\"right\">\n              {formatMessage(\n                {\n                  id: getTranslation('CMEditViewAITranslation.settings-link'),\n                  defaultMessage:\n                    '{enabled, select, true {Disable it in settings} false {Enable it in settings} other {Enable it in settings}}',\n                },\n                { enabled: isAISettingEnabled }\n              )}\n            </Typography>\n          </Link>\n        </Flex>\n      ),\n    },\n  };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FillFromAnotherLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst FillFromAnotherLocaleAction = ({\n  documentId,\n  meta,\n  model,\n  collectionType,\n}: HeaderActionProps) => {\n  const { formatMessage } = useIntl();\n  const [{ query }] = useQueryParams<I18nBaseQuery>();\n  const { hasI18n } = useI18n();\n  const currentDesiredLocale = query.plugins?.i18n?.locale;\n  const [localeSelected, setLocaleSelected] = React.useState<string | null>(null);\n  const setValues = useForm('FillFromAnotherLocale', (state) => state.setValues);\n\n  const { getDocument } = useDocumentActions();\n  const { schema, components } = useDocument({\n    model,\n    documentId,\n    collectionType,\n    params: { locale: currentDesiredLocale },\n  });\n  const { data: locales = [] } = useGetLocalesQuery();\n\n  const isAIAvailable = useAIAvailability();\n  const { data: settings } = useGetSettingsQuery();\n  const isAISettingEnabled = settings?.data?.aiLocalizations;\n\n  const availableLocales = Array.isArray(locales)\n    ? locales.filter((locale) => meta?.availableLocales.some((l) => l.locale === locale.code))\n    : [];\n\n  const fillFromLocale = (onClose: () => void) => async () => {\n    const response = await getDocument({\n      collectionType,\n      model,\n      documentId,\n      params: { locale: localeSelected },\n    });\n    if (!response || !schema) {\n      return;\n    }\n\n    const { data } = response;\n\n    const cleanedData = cleanData(data, schema, components);\n\n    setValues(cleanedData);\n\n    onClose();\n  };\n\n  if (!hasI18n) {\n    return null;\n  }\n\n  // Do not display this action when AI is available and AI translations are enabled\n  if (isAIAvailable && isAISettingEnabled) {\n    return null;\n  }\n\n  return {\n    type: 'icon',\n    icon: <Earth />,\n    disabled: availableLocales.length === 0,\n    label: formatMessage({\n      id: getTranslation('CMEditViewCopyLocale.copy-text'),\n      defaultMessage: 'Fill in from another locale',\n    }),\n    dialog: {\n      type: 'dialog',\n      title: formatMessage({\n        id: getTranslation('CMEditViewCopyLocale.dialog.title'),\n        defaultMessage: 'Confirmation',\n      }),\n      content: ({ onClose }: { onClose: () => void }) => (\n        <>\n          <Dialog.Body>\n            <Flex direction=\"column\" gap={3}>\n              <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n              <Typography textAlign=\"center\">\n                {formatMessage({\n                  id: getTranslation('CMEditViewCopyLocale.dialog.body'),\n                  defaultMessage:\n                    'Your current content will be erased and filled by the content of the selected locale:',\n                })}\n              </Typography>\n              <Field.Root width=\"100%\">\n                <Field.Label>\n                  {formatMessage({\n                    id: getTranslation('CMEditViewCopyLocale.dialog.field.label'),\n                    defaultMessage: 'Locale',\n                  })}\n                </Field.Label>\n                <SingleSelect\n                  value={localeSelected}\n                  placeholder={formatMessage({\n                    id: getTranslation('CMEditViewCopyLocale.dialog.field.placeholder'),\n                    defaultMessage: 'Select one locale...',\n                  })}\n                  // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n                  onChange={(value) => setLocaleSelected(value)}\n                >\n                  {availableLocales.map((locale) => (\n                    <SingleSelectOption key={locale.code} value={locale.code}>\n                      {locale.name}\n                    </SingleSelectOption>\n                  ))}\n                </SingleSelect>\n              </Field.Root>\n            </Flex>\n          </Dialog.Body>\n          <Dialog.Footer>\n            <Flex gap={2} width=\"100%\">\n              <Button flex=\"auto\" variant=\"tertiary\" onClick={onClose}>\n                {formatMessage({\n                  id: getTranslation('CMEditViewCopyLocale.cancel-text'),\n                  defaultMessage: 'No, cancel',\n                })}\n              </Button>\n              <Button flex=\"auto\" variant=\"success\" onClick={fillFromLocale(onClose)}>\n                {formatMessage({\n                  id: getTranslation('CMEditViewCopyLocale.submit-text'),\n                  defaultMessage: 'Yes, fill in',\n                })}\n              </Button>\n            </Flex>\n          </Dialog.Footer>\n        </>\n      ),\n    },\n  };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeleteLocaleAction: DocumentActionComponent = ({\n  document,\n  documentId,\n  model,\n  collectionType,\n}) => {\n  const { formatMessage } = useIntl();\n  const navigate = useNavigate();\n  const { toggleNotification } = useNotification();\n  const { delete: deleteAction, isLoading } = useDocumentActions();\n  const { hasI18n, canDelete } = useI18n();\n\n  // Get the current locale object, using the URL instead of document so it works while creating\n  const [{ query }] = useQueryParams<I18nBaseQuery>();\n  const { data: locales = [] } = useGetLocalesQuery();\n  const currentDesiredLocale = query.plugins?.i18n?.locale;\n  const locale = !('error' in locales) && locales.find((loc) => loc.code === currentDesiredLocale);\n\n  if (!hasI18n) {\n    return null;\n  }\n\n  return {\n    disabled:\n      (document?.locale && !canDelete.includes(document.locale)) || !document || !document.id,\n    position: ['header', 'table-row'],\n    label: formatMessage(\n      {\n        id: getTranslation('actions.delete.label'),\n        defaultMessage: 'Delete entry ({locale})',\n      },\n      { locale: locale && locale.name }\n    ),\n    icon: <StyledTrash />,\n    variant: 'danger',\n    dialog: {\n      type: 'dialog',\n      title: formatMessage({\n        id: getTranslation('actions.delete.dialog.title'),\n        defaultMessage: 'Confirmation',\n      }),\n      content: (\n        <Flex direction=\"column\" gap={2}>\n          <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n          <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n            {formatMessage({\n              id: getTranslation('actions.delete.dialog.body'),\n              defaultMessage: 'Are you sure?',\n            })}\n          </Typography>\n        </Flex>\n      ),\n      loading: isLoading,\n      onConfirm: async () => {\n        const unableToDelete =\n          // We are unable to delete a collection type without a document ID\n          // & unable to delete generally if there is no document locale\n          (collectionType !== 'single-types' && !documentId) || !document?.locale;\n\n        if (unableToDelete) {\n          console.error(\n            \"You're trying to delete a document without an id or locale, this is likely a bug with Strapi. Please open an issue.\"\n          );\n\n          toggleNotification({\n            message: formatMessage({\n              id: getTranslation('actions.delete.error'),\n              defaultMessage: 'An error occurred while trying to delete the document locale.',\n            }),\n            type: 'danger',\n          });\n\n          return;\n        }\n\n        const res = await deleteAction({\n          documentId,\n          model,\n          collectionType,\n          params: { locale: document.locale },\n        });\n\n        if (!('error' in res)) {\n          navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n        }\n      },\n    },\n  };\n};\n\nexport type LocaleStatus = {\n  locale: string;\n  status: Modules.Documents.Params.PublicationStatus.Kind | 'modified';\n};\n\ninterface ExtendedDocumentActionProps extends DocumentActionProps {\n  action?: 'bulk-publish' | 'bulk-unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleAction\n *\n * This component is used to handle bulk publish and unpublish actions on locales.\n * -----------------------------------------------------------------------------------------------*/\n\nconst BulkLocaleAction: DocumentActionComponent = ({\n  document,\n  documentId,\n  model,\n  collectionType,\n  action,\n}: ExtendedDocumentActionProps) => {\n  const locale = document?.locale ?? null;\n  const [{ query }] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n  const params = React.useMemo(() => buildValidParams(query), [query]);\n  const isOnPublishedTab = query.status === 'published';\n\n  const { formatMessage } = useIntl();\n  const { hasI18n, canPublish } = useI18n();\n  const { toggleNotification } = useNotification();\n  const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n  const [selectedRows, setSelectedRows] = React.useState<any[]>([]);\n  const [isDraftRelationConfirmationOpen, setIsDraftRelationConfirmationOpen] =\n    React.useState<boolean>(false);\n\n  const { publishMany: publishManyAction, unpublishMany: unpublishManyAction } =\n    useDocumentActions();\n\n  const { schema, validate } = useDocument(\n    {\n      model,\n      collectionType,\n      documentId,\n      params: {\n        locale,\n      },\n    },\n    {\n      // No need to fetch the document, the data is already available in the `document` prop\n      skip: true,\n    }\n  );\n\n  const { data: localesMetadata = [] } = useGetLocalesQuery(hasI18n ? undefined : skipToken);\n\n  const headers = [\n    {\n      label: formatMessage({\n        id: 'global.name',\n        defaultMessage: 'Name',\n      }),\n      name: 'name',\n    },\n    {\n      label: formatMessage({\n        id: getTranslation('CMEditViewBulkLocale.status'),\n        defaultMessage: 'Status',\n      }),\n      name: 'status',\n    },\n    {\n      label: formatMessage({\n        id: getTranslation('CMEditViewBulkLocale.publication-status'),\n        defaultMessage: 'Publication Status',\n      }),\n      name: 'publication-status',\n    },\n  ];\n\n  // Extract the rows for the bulk locale publish modal and any validation\n  // errors per locale\n  const [rows, validationErrors] = React.useMemo(() => {\n    if (!document) {\n      return [[], {}];\n    }\n\n    const localizations = document.localizations ?? [];\n\n    // Build the rows for the bulk locale publish modal by combining the current\n    // document with all the available locales from the document meta\n    const locales: LocaleStatus[] = localizations.map((doc: any) => {\n      const { locale, status } = doc;\n      return { locale, status };\n    });\n\n    // Add the current document locale\n    locales.unshift({\n      locale: document.locale,\n      status: document.status,\n    });\n\n    // Build the validation errors for each locale.\n    const allDocuments = [document, ...localizations];\n    const errors = allDocuments.reduce<FormErrors>((errs, document) => {\n      if (!document) {\n        return errs;\n      }\n\n      // Validate each locale entry via the useDocument validate function and store any errors in a dictionary\n      const validation = validate(document as Modules.Documents.AnyDocument);\n      if (validation !== null) {\n        errs[document.locale] = validation;\n      }\n      return errs;\n    }, {});\n\n    return [locales, errors];\n  }, [document, validate]);\n\n  const isBulkPublish = action === 'bulk-publish';\n  const localesForAction = selectedRows.reduce((acc: string[], selectedRow: LocaleStatus) => {\n    const isValidLocale =\n      // Validation errors are irrelevant if we are trying to unpublish\n      !isBulkPublish || !Object.keys(validationErrors).includes(selectedRow.locale);\n\n    const shouldAddLocale = isBulkPublish\n      ? selectedRow.status !== 'published' && isValidLocale\n      : selectedRow.status !== 'draft' && isValidLocale;\n\n    if (shouldAddLocale) {\n      acc.push(selectedRow.locale);\n    }\n\n    return acc;\n  }, []);\n\n  // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n  // see https://www.notion.so/strapi/Count-draft-relations-56901b492efb45ab90d42fe975b32bd8?pvs=4\n  const enableDraftRelationsCount = false;\n  const {\n    data: draftRelationsCount = 0,\n    isLoading: isDraftRelationsLoading,\n    error: isDraftRelationsError,\n  } = useGetManyDraftRelationCountQuery(\n    {\n      model,\n      documentIds: [documentId!],\n      locale: localesForAction,\n    },\n    {\n      skip: !enableDraftRelationsCount || !documentId || localesForAction.length === 0,\n    }\n  );\n\n  React.useEffect(() => {\n    if (isDraftRelationsError) {\n      toggleNotification({\n        type: 'danger',\n        message: formatAPIError(isDraftRelationsError),\n      });\n    }\n  }, [isDraftRelationsError, toggleNotification, formatAPIError]);\n\n  if (!schema?.options?.draftAndPublish) {\n    return null;\n  }\n\n  if (!hasI18n) {\n    return null;\n  }\n\n  if (!documentId) {\n    return null;\n  }\n\n  // This document action can be enabled given that draft and publish and i18n are\n  // enabled and we can publish the current locale.\n\n  const publish = async () => {\n    await publishManyAction({\n      model,\n      documentIds: [documentId],\n      params: {\n        ...params,\n        locale: localesForAction,\n      },\n    });\n\n    setSelectedRows([]);\n  };\n\n  const unpublish = async () => {\n    await unpublishManyAction({\n      model,\n      documentIds: [documentId],\n      params: {\n        ...params,\n        locale: localesForAction,\n      },\n    });\n\n    setSelectedRows([]);\n  };\n\n  const handleAction = async () => {\n    if (draftRelationsCount > 0) {\n      setIsDraftRelationConfirmationOpen(true);\n    } else if (isBulkPublish) {\n      await publish();\n    } else {\n      await unpublish();\n    }\n  };\n\n  if (isDraftRelationConfirmationOpen) {\n    return {\n      label: formatMessage({\n        id: 'app.components.ConfirmDialog.title',\n        defaultMessage: 'Confirmation',\n      }),\n      variant: 'danger',\n      dialog: {\n        onCancel: () => {\n          setIsDraftRelationConfirmationOpen(false);\n        },\n        onConfirm: async () => {\n          await publish();\n\n          setIsDraftRelationConfirmationOpen(false);\n        },\n        type: 'dialog',\n        title: formatMessage({\n          id: getTranslation('actions.publish.dialog.title'),\n          defaultMessage: 'Confirmation',\n        }),\n        content: (\n          <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n            <WarningCircle width=\"2.4rem\" height=\"2.4rem\" fill=\"danger600\" />\n            <Typography textAlign=\"center\">\n              {formatMessage({\n                id: getTranslation('CMEditViewBulkLocale.draft-relation-warning'),\n                defaultMessage:\n                  'Some locales are related to draft entries. Publishing them could leave broken links in your app.',\n              })}\n            </Typography>\n            <Typography textAlign=\"center\">\n              {formatMessage({\n                id: getTranslation('CMEditViewBulkLocale.continue-confirmation'),\n                defaultMessage: 'Are you sure you want to continue?',\n              })}\n            </Typography>\n          </Flex>\n        ),\n      },\n    };\n  }\n\n  const hasPermission = selectedRows\n    .map(({ locale }) => locale)\n    .every((locale) => canPublish.includes(locale));\n\n  return {\n    label: formatMessage({\n      id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n      defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n    }),\n    variant: isBulkPublish ? 'secondary' : 'danger',\n    icon: isBulkPublish ? <ListPlus /> : <Cross />,\n    disabled: isOnPublishedTab || canPublish.length === 0,\n    position: ['panel'],\n    dialog: {\n      type: 'modal',\n      title: formatMessage({\n        id: getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),\n        defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`,\n      }),\n      content: () => {\n        return (\n          <Table.Root\n            headers={headers}\n            rows={rows.map((row) => ({\n              ...row,\n              id: row.locale,\n            }))}\n            selectedRows={selectedRows}\n            onSelectedRowsChange={(tableSelectedRows) => setSelectedRows(tableSelectedRows)}\n          >\n            <BulkLocaleActionModal\n              validationErrors={validationErrors}\n              headers={headers}\n              rows={rows}\n              localesMetadata={localesMetadata as Locale[]}\n              action={action ?? 'bulk-publish'}\n            />\n          </Table.Root>\n        );\n      },\n      footer: () => (\n        <Modal.Footer justifyContent=\"flex-end\">\n          <Button\n            loading={isDraftRelationsLoading}\n            disabled={!hasPermission || localesForAction.length === 0}\n            variant=\"default\"\n            onClick={handleAction}\n          >\n            {formatMessage({\n              id: isBulkPublish ? 'app.utils.publish' : 'app.utils.unpublish',\n              defaultMessage: isBulkPublish ? 'Publish' : 'Unpublish',\n            })}\n          </Button>\n        </Modal.Footer>\n      ),\n    },\n  };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocalePublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocalePublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n  return BulkLocaleAction({ action: 'bulk-publish', ...props });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkLocaleUnpublishAction\n * -----------------------------------------------------------------------------------------------*/\nconst BulkLocaleUnpublishAction: DocumentActionComponent = (props: ExtendedDocumentActionProps) => {\n  return BulkLocaleAction({ action: 'bulk-unpublish', ...props });\n};\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledTrash = styled(Trash)`\n  path {\n    fill: currentColor;\n  }\n`;\n\nexport {\n  BulkLocalePublishAction,\n  BulkLocaleUnpublishAction,\n  DeleteLocaleAction,\n  LocalePickerAction,\n  FillFromAnotherLocaleAction,\n  AITranslationStatusAction,\n};\n"],"names":["statusVariants","draft","published","modified","LocaleOption","isDraftAndPublishEnabled","locale","status","entryExists","formatMessage","useIntl","id","getTranslation","defaultMessage","bold","_jsx","b","name","_jsxs","Flex","width","gap","justifyContent","Typography","Status","display","paddingLeft","paddingRight","paddingTop","paddingBottom","size","variant","tag","fontWeight","capitalize","LocaleOptionStartIcon","entryWithLocaleExists","translationStatus","index","isAiAvailable","useAIAvailability","Plus","WarningCircle","fill","LocalePickerAction","document","meta","model","collectionType","documentId","query","setQuery","useQueryParams","hasI18n","canCreate","canRead","useI18n","data","locales","useGetLocalesQuery","currentDesiredLocale","plugins","i18n","schema","useDocument","params","jobData","useGetAILocalizationJobsByDocumentQuery","settings","useGetSettingsQuery","handleSelect","React","useCallback","value","useEffect","Array","isArray","doesLocaleExist","find","loc","code","defaultLocale","isDefault","currentLocale","undefined","availableLocales","documentLocalizations","localizations","allLocalizations","length","allCurrentLocales","getDocumentStatus","displayedLocales","filter","includes","localesSortingDefaultFirst","sort","a","label","options","map","some","doc","currentLocaleDoc","permissionsToCheck","aiLocalizations","_render","Fragment","SingleSelectOption","disabled","startIcon","draftAndPublish","Box","customizeContent","onSelect","docStatus","statuses","availableStatus","publishedAt","AITranslationStatusIcon","styled","theme","spaces","$isAISettingEnabled","colors","neutral150","neutral300","AITranslationStatusAction","isAIAvailable","isAISettingEnabled","useAILocalizationJobsPolling","statusVariant","_status","message","height","aria-label","Boolean","Sparkle","tooltip","direction","padding","alignItems","enabled","Link","fontSize","NavLink","to","style","alignSelf","textAlign","FillFromAnotherLocaleAction","localeSelected","setLocaleSelected","useState","setValues","useForm","state","getDocument","useDocumentActions","components","l","fillFromLocale","onClose","response","cleanedData","cleanData","type","icon","Earth","dialog","title","content","_Fragment","Dialog","Body","Field","Root","Label","SingleSelect","placeholder","onChange","Footer","Button","flex","onClick","DeleteLocaleAction","navigate","useNavigate","toggleNotification","useNotification","delete","deleteAction","isLoading","canDelete","position","StyledTrash","loading","onConfirm","unableToDelete","console","error","res","pathname","replace","BulkLocaleAction","action","useMemo","buildValidParams","isOnPublishedTab","canPublish","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","selectedRows","setSelectedRows","isDraftRelationConfirmationOpen","setIsDraftRelationConfirmationOpen","publishMany","publishManyAction","unpublishMany","unpublishManyAction","validate","skip","localesMetadata","skipToken","headers","rows","validationErrors","unshift","allDocuments","errors","reduce","errs","validation","isBulkPublish","localesForAction","acc","selectedRow","isValidLocale","Object","keys","shouldAddLocale","push","enableDraftRelationsCount","draftRelationsCount","isDraftRelationsLoading","isDraftRelationsError","useGetManyDraftRelationCountQuery","documentIds","publish","unpublish","handleAction","onCancel","hasPermission","every","ListPlus","Cross","Table","row","onSelectedRowsChange","tableSelectedRows","BulkLocaleActionModal","footer","Modal","BulkLocalePublishAction","props","BulkLocaleUnpublishAction","Trash"],"mappings":"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"}
         
     |