@strapi/admin 5.54.0 → 5.55.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/admin/src/components/LanguageProvider.js +35 -1
- package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.mjs +17 -2
- package/dist/admin/admin/src/components/LanguageProvider.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +113 -35
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +115 -37
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNavFolder.js +188 -0
- package/dist/admin/admin/src/components/SubNavFolder.js.map +1 -0
- package/dist/admin/admin/src/components/SubNavFolder.mjs +186 -0
- package/dist/admin/admin/src/components/SubNavFolder.mjs.map +1 -0
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +1 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +1 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +4 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +4 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js +1 -6
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs +1 -6
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +7 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +7 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +5 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +5 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +0 -4
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +0 -4
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/src/components/SubNav.d.ts +27 -8
- package/dist/admin/src/components/SubNavFolder.d.ts +15 -0
- package/dist/admin/src/features/Tracking.d.ts +2 -1
- package/dist/admin/src/services/admin.d.ts +1 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +4 -0
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +1 -5
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +1 -5
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +2 -0
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +2 -0
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.js +3 -3
- package/dist/server/server/src/ai/controllers/ai.js.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.mjs +3 -3
- package/dist/server/server/src/ai/controllers/ai.mjs.map +1 -1
- package/dist/server/server/src/ai/services/ai.js +37 -12
- package/dist/server/server/src/ai/services/ai.js.map +1 -1
- package/dist/server/server/src/ai/services/ai.mjs +37 -12
- package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
- package/dist/server/server/src/audit-logs/tokens.js +106 -0
- package/dist/server/server/src/audit-logs/tokens.js.map +1 -0
- package/dist/server/server/src/audit-logs/tokens.mjs +99 -0
- package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -0
- package/dist/server/server/src/controllers/admin.js +10 -1
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +10 -1
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +106 -4
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +107 -5
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/token.js +56 -4
- package/dist/server/server/src/services/transfer/token.js.map +1 -1
- package/dist/server/server/src/services/transfer/token.mjs +57 -5
- package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
- package/dist/server/src/ai/services/ai.d.ts +3 -1
- package/dist/server/src/ai/services/ai.d.ts.map +1 -1
- package/dist/server/src/audit-logs/tokens.d.ts +86 -0
- package/dist/server/src/audit-logs/tokens.d.ts.map +1 -0
- package/dist/server/src/controllers/admin.d.ts +1 -0
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/transfer/token.d.ts.map +1 -1
- package/dist/shared/contracts/admin.d.ts +1 -0
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -1,23 +1,57 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
require('react');
|
|
4
|
+
var React = require('react');
|
|
5
5
|
var defaultsDeep = require('lodash/defaultsDeep');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
7
|
var hooks = require('../core/store/hooks.js');
|
|
8
8
|
|
|
9
9
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
|
|
11
|
+
function _interopNamespace(e) {
|
|
12
|
+
if (e && e.__esModule) return e;
|
|
13
|
+
var n = Object.create(null);
|
|
14
|
+
if (e) {
|
|
15
|
+
Object.keys(e).forEach(function (k) {
|
|
16
|
+
if (k !== 'default') {
|
|
17
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return e[k]; }
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
n.default = e;
|
|
26
|
+
return Object.freeze(n);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
11
30
|
var defaultsDeep__default = /*#__PURE__*/_interopDefault(defaultsDeep);
|
|
12
31
|
|
|
13
32
|
const LanguageProvider = ({ children, messages })=>{
|
|
14
33
|
const locale = hooks.useTypedSelector((state)=>state.admin_app.language.locale);
|
|
15
34
|
const appMessages = defaultsDeep__default.default(messages[locale], messages.en);
|
|
35
|
+
const warnedKeysRef = React__namespace.useRef(new Set());
|
|
36
|
+
const shouldLogMissingTranslations = process.env.NODE_ENV !== 'production' && process.env.STRAPI_ADMIN_LOG_MISSING_TRANSLATIONS === 'true';
|
|
37
|
+
const handleIntlError = React__namespace.useCallback((err)=>{
|
|
38
|
+
if (err.code === reactIntl.ReactIntlErrorCode.MISSING_TRANSLATION) {
|
|
39
|
+
if (shouldLogMissingTranslations && !warnedKeysRef.current.has(err.message)) {
|
|
40
|
+
warnedKeysRef.current.add(err.message);
|
|
41
|
+
console.warn(`[react-intl] Missing translation detected. English fallback message is being used. ${err.message}`);
|
|
42
|
+
}
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
console.error(err);
|
|
46
|
+
}, [
|
|
47
|
+
shouldLogMissingTranslations
|
|
48
|
+
]);
|
|
16
49
|
return /*#__PURE__*/ jsxRuntime.jsx(reactIntl.IntlProvider, {
|
|
17
50
|
locale: locale,
|
|
18
51
|
defaultLocale: "en",
|
|
19
52
|
messages: appMessages,
|
|
20
53
|
textComponent: "span",
|
|
54
|
+
onError: handleIntlError,
|
|
21
55
|
children: children
|
|
22
56
|
});
|
|
23
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageProvider.js","sources":["../../../../../admin/src/components/LanguageProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport defaultsDeep from 'lodash/defaultsDeep';\nimport { IntlProvider } from 'react-intl';\n\nimport { useTypedSelector } from '../core/store/hooks';\n\n/* -------------------------------------------------------------------------------------------------\n * LanguageProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LanguageProviderProps {\n children: React.ReactNode;\n messages: Record<string, Record<string, string>>;\n}\n\nconst LanguageProvider = ({ children, messages }: LanguageProviderProps) => {\n const locale = useTypedSelector((state) => state.admin_app.language.locale);\n const appMessages = defaultsDeep(messages[locale], messages.en);\n\n return (\n <IntlProvider
|
|
1
|
+
{"version":3,"file":"LanguageProvider.js","sources":["../../../../../admin/src/components/LanguageProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport defaultsDeep from 'lodash/defaultsDeep';\nimport { IntlProvider, ReactIntlErrorCode } from 'react-intl';\n\nimport { useTypedSelector } from '../core/store/hooks';\n\n/* -------------------------------------------------------------------------------------------------\n * LanguageProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LanguageProviderProps {\n children: React.ReactNode;\n messages: Record<string, Record<string, string>>;\n}\n\nconst LanguageProvider = ({ children, messages }: LanguageProviderProps) => {\n const locale = useTypedSelector((state) => state.admin_app.language.locale);\n const appMessages = defaultsDeep(messages[locale], messages.en);\n\n const warnedKeysRef = React.useRef(new Set<string>());\n\n const shouldLogMissingTranslations =\n process.env.NODE_ENV !== 'production' &&\n process.env.STRAPI_ADMIN_LOG_MISSING_TRANSLATIONS === 'true';\n\n const handleIntlError = React.useCallback(\n (err: Parameters<NonNullable<React.ComponentProps<typeof IntlProvider>['onError']>>[0]) => {\n if (err.code === ReactIntlErrorCode.MISSING_TRANSLATION) {\n if (shouldLogMissingTranslations && !warnedKeysRef.current.has(err.message)) {\n warnedKeysRef.current.add(err.message);\n\n console.warn(\n `[react-intl] Missing translation detected. English fallback message is being used. ${err.message}`\n );\n }\n\n return;\n }\n\n console.error(err);\n },\n [shouldLogMissingTranslations]\n );\n\n return (\n <IntlProvider\n locale={locale}\n defaultLocale=\"en\"\n messages={appMessages}\n textComponent=\"span\"\n onError={handleIntlError}\n >\n {children}\n </IntlProvider>\n );\n};\n\nexport { LanguageProvider };\nexport type { LanguageProviderProps };\n"],"names":["LanguageProvider","children","messages","locale","useTypedSelector","state","admin_app","language","appMessages","defaultsDeep","en","warnedKeysRef","React","useRef","Set","shouldLogMissingTranslations","process","env","NODE_ENV","STRAPI_ADMIN_LOG_MISSING_TRANSLATIONS","handleIntlError","useCallback","err","code","ReactIntlErrorCode","MISSING_TRANSLATION","current","has","message","add","console","warn","error","_jsx","IntlProvider","defaultLocale","textComponent","onError"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAMA,mBAAmB,CAAC,EAAEC,QAAQ,EAAEC,QAAQ,EAAyB,GAAA;IACrE,MAAMC,MAAAA,GAASC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,MAAM,CAAA;AAC1E,IAAA,MAAMK,cAAcC,6BAAAA,CAAaP,QAAQ,CAACC,MAAAA,CAAO,EAAED,SAASQ,EAAE,CAAA;AAE9D,IAAA,MAAMC,aAAAA,GAAgBC,gBAAAA,CAAMC,MAAM,CAAC,IAAIC,GAAAA,EAAAA,CAAAA;IAEvC,MAAMC,4BAAAA,GACJC,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,YAAA,IACzBF,OAAAA,CAAQC,GAAG,CAACE,qCAAqC,KAAK,MAAA;AAExD,IAAA,MAAMC,eAAAA,GAAkBR,gBAAAA,CAAMS,WAAW,CACvC,CAACC,GAAAA,GAAAA;AACC,QAAA,IAAIA,GAAAA,CAAIC,IAAI,KAAKC,4BAAAA,CAAmBC,mBAAmB,EAAE;YACvD,IAAIV,4BAAAA,IAAgC,CAACJ,aAAAA,CAAce,OAAO,CAACC,GAAG,CAACL,GAAAA,CAAIM,OAAO,CAAA,EAAG;AAC3EjB,gBAAAA,aAAAA,CAAce,OAAO,CAACG,GAAG,CAACP,IAAIM,OAAO,CAAA;AAErCE,gBAAAA,OAAAA,CAAQC,IAAI,CACV,CAAC,mFAAmF,EAAET,GAAAA,CAAIM,OAAO,CAAA,CAAE,CAAA;AAEvG,YAAA;AAEA,YAAA;AACF,QAAA;AAEAE,QAAAA,OAAAA,CAAQE,KAAK,CAACV,GAAAA,CAAAA;IAChB,CAAA,EACA;AAACP,QAAAA;AAA6B,KAAA,CAAA;AAGhC,IAAA,qBACEkB,cAAA,CAACC,sBAAAA,EAAAA;QACC/B,MAAAA,EAAQA,MAAAA;QACRgC,aAAAA,EAAc,IAAA;QACdjC,QAAAA,EAAUM,WAAAA;QACV4B,aAAAA,EAAc,MAAA;QACdC,OAAAA,EAASjB,eAAAA;AAERnB,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
|
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import 'react';
|
|
2
|
+
import * as React from 'react';
|
|
3
3
|
import defaultsDeep from 'lodash/defaultsDeep';
|
|
4
|
-
import { IntlProvider } from 'react-intl';
|
|
4
|
+
import { ReactIntlErrorCode, IntlProvider } from 'react-intl';
|
|
5
5
|
import { useTypedSelector } from '../core/store/hooks.mjs';
|
|
6
6
|
|
|
7
7
|
const LanguageProvider = ({ children, messages })=>{
|
|
8
8
|
const locale = useTypedSelector((state)=>state.admin_app.language.locale);
|
|
9
9
|
const appMessages = defaultsDeep(messages[locale], messages.en);
|
|
10
|
+
const warnedKeysRef = React.useRef(new Set());
|
|
11
|
+
const shouldLogMissingTranslations = process.env.NODE_ENV !== 'production' && process.env.STRAPI_ADMIN_LOG_MISSING_TRANSLATIONS === 'true';
|
|
12
|
+
const handleIntlError = React.useCallback((err)=>{
|
|
13
|
+
if (err.code === ReactIntlErrorCode.MISSING_TRANSLATION) {
|
|
14
|
+
if (shouldLogMissingTranslations && !warnedKeysRef.current.has(err.message)) {
|
|
15
|
+
warnedKeysRef.current.add(err.message);
|
|
16
|
+
console.warn(`[react-intl] Missing translation detected. English fallback message is being used. ${err.message}`);
|
|
17
|
+
}
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
console.error(err);
|
|
21
|
+
}, [
|
|
22
|
+
shouldLogMissingTranslations
|
|
23
|
+
]);
|
|
10
24
|
return /*#__PURE__*/ jsx(IntlProvider, {
|
|
11
25
|
locale: locale,
|
|
12
26
|
defaultLocale: "en",
|
|
13
27
|
messages: appMessages,
|
|
14
28
|
textComponent: "span",
|
|
29
|
+
onError: handleIntlError,
|
|
15
30
|
children: children
|
|
16
31
|
});
|
|
17
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageProvider.mjs","sources":["../../../../../admin/src/components/LanguageProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport defaultsDeep from 'lodash/defaultsDeep';\nimport { IntlProvider } from 'react-intl';\n\nimport { useTypedSelector } from '../core/store/hooks';\n\n/* -------------------------------------------------------------------------------------------------\n * LanguageProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LanguageProviderProps {\n children: React.ReactNode;\n messages: Record<string, Record<string, string>>;\n}\n\nconst LanguageProvider = ({ children, messages }: LanguageProviderProps) => {\n const locale = useTypedSelector((state) => state.admin_app.language.locale);\n const appMessages = defaultsDeep(messages[locale], messages.en);\n\n return (\n <IntlProvider
|
|
1
|
+
{"version":3,"file":"LanguageProvider.mjs","sources":["../../../../../admin/src/components/LanguageProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport defaultsDeep from 'lodash/defaultsDeep';\nimport { IntlProvider, ReactIntlErrorCode } from 'react-intl';\n\nimport { useTypedSelector } from '../core/store/hooks';\n\n/* -------------------------------------------------------------------------------------------------\n * LanguageProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LanguageProviderProps {\n children: React.ReactNode;\n messages: Record<string, Record<string, string>>;\n}\n\nconst LanguageProvider = ({ children, messages }: LanguageProviderProps) => {\n const locale = useTypedSelector((state) => state.admin_app.language.locale);\n const appMessages = defaultsDeep(messages[locale], messages.en);\n\n const warnedKeysRef = React.useRef(new Set<string>());\n\n const shouldLogMissingTranslations =\n process.env.NODE_ENV !== 'production' &&\n process.env.STRAPI_ADMIN_LOG_MISSING_TRANSLATIONS === 'true';\n\n const handleIntlError = React.useCallback(\n (err: Parameters<NonNullable<React.ComponentProps<typeof IntlProvider>['onError']>>[0]) => {\n if (err.code === ReactIntlErrorCode.MISSING_TRANSLATION) {\n if (shouldLogMissingTranslations && !warnedKeysRef.current.has(err.message)) {\n warnedKeysRef.current.add(err.message);\n\n console.warn(\n `[react-intl] Missing translation detected. English fallback message is being used. ${err.message}`\n );\n }\n\n return;\n }\n\n console.error(err);\n },\n [shouldLogMissingTranslations]\n );\n\n return (\n <IntlProvider\n locale={locale}\n defaultLocale=\"en\"\n messages={appMessages}\n textComponent=\"span\"\n onError={handleIntlError}\n >\n {children}\n </IntlProvider>\n );\n};\n\nexport { LanguageProvider };\nexport type { LanguageProviderProps };\n"],"names":["LanguageProvider","children","messages","locale","useTypedSelector","state","admin_app","language","appMessages","defaultsDeep","en","warnedKeysRef","React","useRef","Set","shouldLogMissingTranslations","process","env","NODE_ENV","STRAPI_ADMIN_LOG_MISSING_TRANSLATIONS","handleIntlError","useCallback","err","code","ReactIntlErrorCode","MISSING_TRANSLATION","current","has","message","add","console","warn","error","_jsx","IntlProvider","defaultLocale","textComponent","onError"],"mappings":";;;;;;AAgBA,MAAMA,mBAAmB,CAAC,EAAEC,QAAQ,EAAEC,QAAQ,EAAyB,GAAA;IACrE,MAAMC,MAAAA,GAASC,iBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,MAAM,CAAA;AAC1E,IAAA,MAAMK,cAAcC,YAAAA,CAAaP,QAAQ,CAACC,MAAAA,CAAO,EAAED,SAASQ,EAAE,CAAA;AAE9D,IAAA,MAAMC,aAAAA,GAAgBC,KAAAA,CAAMC,MAAM,CAAC,IAAIC,GAAAA,EAAAA,CAAAA;IAEvC,MAAMC,4BAAAA,GACJC,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,YAAA,IACzBF,OAAAA,CAAQC,GAAG,CAACE,qCAAqC,KAAK,MAAA;AAExD,IAAA,MAAMC,eAAAA,GAAkBR,KAAAA,CAAMS,WAAW,CACvC,CAACC,GAAAA,GAAAA;AACC,QAAA,IAAIA,GAAAA,CAAIC,IAAI,KAAKC,kBAAAA,CAAmBC,mBAAmB,EAAE;YACvD,IAAIV,4BAAAA,IAAgC,CAACJ,aAAAA,CAAce,OAAO,CAACC,GAAG,CAACL,GAAAA,CAAIM,OAAO,CAAA,EAAG;AAC3EjB,gBAAAA,aAAAA,CAAce,OAAO,CAACG,GAAG,CAACP,IAAIM,OAAO,CAAA;AAErCE,gBAAAA,OAAAA,CAAQC,IAAI,CACV,CAAC,mFAAmF,EAAET,GAAAA,CAAIM,OAAO,CAAA,CAAE,CAAA;AAEvG,YAAA;AAEA,YAAA;AACF,QAAA;AAEAE,QAAAA,OAAAA,CAAQE,KAAK,CAACV,GAAAA,CAAAA;IAChB,CAAA,EACA;AAACP,QAAAA;AAA6B,KAAA,CAAA;AAGhC,IAAA,qBACEkB,GAAA,CAACC,YAAAA,EAAAA;QACC/B,MAAAA,EAAQA,MAAAA;QACRgC,aAAAA,EAAc,IAAA;QACdjC,QAAAA,EAAUM,WAAAA;QACV4B,aAAAA,EAAc,MAAA;QACdC,OAAAA,EAASjB,eAAAA;AAERnB,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
|
|
@@ -8,6 +8,7 @@ var reactRouterDom = require('react-router-dom');
|
|
|
8
8
|
var styledComponents = require('styled-components');
|
|
9
9
|
var theme = require('../constants/theme.js');
|
|
10
10
|
var Tours = require('./GuidedTour/Tours.js');
|
|
11
|
+
var SubNavFolder = require('./SubNavFolder.js');
|
|
11
12
|
|
|
12
13
|
const MainSubNav = styledComponents.styled(designSystem.SubNav)`
|
|
13
14
|
width: 100%;
|
|
@@ -43,6 +44,10 @@ const StyledLink = styledComponents.styled(reactRouterDom.NavLink)`
|
|
|
43
44
|
|
|
44
45
|
color: ${({ theme })=>theme.colors.neutral800};
|
|
45
46
|
|
|
47
|
+
& > div {
|
|
48
|
+
padding-left: ${({ theme, $depth = 0 })=>`calc(${$depth} * ${theme.spaces[6]} + ${theme.spaces[3]})`};
|
|
49
|
+
}
|
|
50
|
+
|
|
46
51
|
&.active > div {
|
|
47
52
|
${({ theme })=>{
|
|
48
53
|
return `
|
|
@@ -73,14 +78,28 @@ const StyledLink = styledComponents.styled(reactRouterDom.NavLink)`
|
|
|
73
78
|
outline-offset: -2px;
|
|
74
79
|
}
|
|
75
80
|
`;
|
|
81
|
+
const LinkBullet = styledComponents.styled.span`
|
|
82
|
+
display: inline-flex;
|
|
83
|
+
align-items: center;
|
|
84
|
+
justify-content: center;
|
|
85
|
+
flex: 0 0 16px;
|
|
86
|
+
|
|
87
|
+
&::before {
|
|
88
|
+
content: '';
|
|
89
|
+
width: 4px;
|
|
90
|
+
height: 4px;
|
|
91
|
+
border-radius: 50%;
|
|
92
|
+
background-color: currentColor;
|
|
93
|
+
}
|
|
94
|
+
`;
|
|
76
95
|
const Link = (props)=>{
|
|
77
|
-
const { label, endAction, handleClick, ...rest } = props;
|
|
96
|
+
const { label, endAction, handleClick, depth, bulleted = false, ...rest } = props;
|
|
78
97
|
return /*#__PURE__*/ jsxRuntime.jsx(StyledLink, {
|
|
79
98
|
...rest,
|
|
99
|
+
$depth: depth,
|
|
80
100
|
onClick: handleClick,
|
|
81
101
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
82
102
|
width: '100%',
|
|
83
|
-
paddingLeft: 3,
|
|
84
103
|
paddingRight: 3,
|
|
85
104
|
paddingTop: {
|
|
86
105
|
initial: 1,
|
|
@@ -99,19 +118,28 @@ const Link = (props)=>{
|
|
|
99
118
|
large: 1
|
|
100
119
|
},
|
|
101
120
|
children: [
|
|
102
|
-
/*#__PURE__*/ jsxRuntime.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
121
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
122
|
+
gap: 2,
|
|
123
|
+
flex: "1",
|
|
124
|
+
minWidth: "0",
|
|
125
|
+
alignItems: "center",
|
|
126
|
+
children: [
|
|
127
|
+
bulleted && /*#__PURE__*/ jsxRuntime.jsx(LinkBullet, {
|
|
128
|
+
"aria-hidden": true
|
|
129
|
+
}),
|
|
130
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
131
|
+
tag: "div",
|
|
132
|
+
lineHeight: "32px",
|
|
133
|
+
overflow: "hidden",
|
|
134
|
+
style: {
|
|
135
|
+
textOverflow: 'ellipsis',
|
|
136
|
+
whiteSpace: 'nowrap',
|
|
137
|
+
flex: 1,
|
|
138
|
+
minWidth: 0
|
|
139
|
+
},
|
|
140
|
+
children: label
|
|
141
|
+
})
|
|
142
|
+
]
|
|
115
143
|
}),
|
|
116
144
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
117
145
|
gap: 2,
|
|
@@ -205,6 +233,64 @@ const Sections = ({ children, ...props })=>{
|
|
|
205
233
|
};
|
|
206
234
|
const Section = ({ label, children, link, sectionId, badgeLabel })=>{
|
|
207
235
|
const listId = React.useId();
|
|
236
|
+
// Used to track the selection of an item within the popover menu (as opposed to a menu dismissal via escape, click outside, etc.)
|
|
237
|
+
const popoverMenuItemClicked = React.useRef(false);
|
|
238
|
+
const linkButton = React.useMemo(()=>{
|
|
239
|
+
if (!link) return;
|
|
240
|
+
if (!link.menu) {
|
|
241
|
+
return /*#__PURE__*/ jsxRuntime.jsx(GuidedTourTooltip, {
|
|
242
|
+
sectionId: sectionId,
|
|
243
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
|
244
|
+
onClick: link.onClick,
|
|
245
|
+
label: link.label,
|
|
246
|
+
variant: "ghost",
|
|
247
|
+
withTooltip: true,
|
|
248
|
+
size: "XS",
|
|
249
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {})
|
|
250
|
+
})
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
const onCloseMenuAutoFocus = (event)=>{
|
|
254
|
+
// If the result of a popover menu close deliberately shifts focus, the default Radix behavior (immediately restore focus on the popover's trigger element when the popover closes) would compete.
|
|
255
|
+
if (link.suppressFocusCaptureOnMenuClose && popoverMenuItemClicked.current) {
|
|
256
|
+
event.preventDefault();
|
|
257
|
+
}
|
|
258
|
+
popoverMenuItemClicked.current = false;
|
|
259
|
+
};
|
|
260
|
+
return /*#__PURE__*/ jsxRuntime.jsx(GuidedTourTooltip, {
|
|
261
|
+
sectionId: sectionId,
|
|
262
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Menu.Root, {
|
|
263
|
+
children: [
|
|
264
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Trigger, {
|
|
265
|
+
label: link.label,
|
|
266
|
+
tag: designSystem.IconButton,
|
|
267
|
+
icon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
|
|
268
|
+
variant: "ghost",
|
|
269
|
+
endIcon: null,
|
|
270
|
+
size: "XS"
|
|
271
|
+
}),
|
|
272
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Content, {
|
|
273
|
+
onCloseAutoFocus: onCloseMenuAutoFocus,
|
|
274
|
+
zIndex: 2,
|
|
275
|
+
children: link.menu.map((item)=>{
|
|
276
|
+
const onSelectMenuItem = ()=>{
|
|
277
|
+
popoverMenuItemClicked.current = true;
|
|
278
|
+
item.onSelect();
|
|
279
|
+
};
|
|
280
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
|
|
281
|
+
onSelect: onSelectMenuItem,
|
|
282
|
+
startIcon: item.startIcon,
|
|
283
|
+
children: item.label
|
|
284
|
+
}, item.label);
|
|
285
|
+
})
|
|
286
|
+
})
|
|
287
|
+
]
|
|
288
|
+
})
|
|
289
|
+
});
|
|
290
|
+
}, [
|
|
291
|
+
link,
|
|
292
|
+
sectionId
|
|
293
|
+
]);
|
|
208
294
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
209
295
|
direction: "column",
|
|
210
296
|
alignItems: "stretch",
|
|
@@ -224,35 +310,26 @@ const Section = ({ label, children, link, sectionId, badgeLabel })=>{
|
|
|
224
310
|
justifyContent: "space-between",
|
|
225
311
|
gap: 2,
|
|
226
312
|
children: [
|
|
227
|
-
/*#__PURE__*/ jsxRuntime.
|
|
228
|
-
|
|
229
|
-
|
|
313
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
314
|
+
gap: 2,
|
|
315
|
+
alignItems: "center",
|
|
316
|
+
minWidth: 0,
|
|
317
|
+
children: [
|
|
318
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
230
319
|
variant: "sigma",
|
|
231
320
|
textColor: "neutral600",
|
|
232
321
|
children: label
|
|
233
|
-
})
|
|
234
|
-
})
|
|
235
|
-
}),
|
|
236
|
-
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
237
|
-
gap: 1,
|
|
238
|
-
children: [
|
|
322
|
+
}),
|
|
239
323
|
badgeLabel && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Badge, {
|
|
240
324
|
backgroundColor: "neutral150",
|
|
241
325
|
textColor: "neutral600",
|
|
242
326
|
children: badgeLabel
|
|
243
|
-
}),
|
|
244
|
-
link && /*#__PURE__*/ jsxRuntime.jsx(GuidedTourTooltip, {
|
|
245
|
-
sectionId: sectionId,
|
|
246
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
|
247
|
-
label: link.label,
|
|
248
|
-
variant: "ghost",
|
|
249
|
-
withTooltip: true,
|
|
250
|
-
onClick: link.onClick,
|
|
251
|
-
size: "XS",
|
|
252
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {})
|
|
253
|
-
})
|
|
254
327
|
})
|
|
255
328
|
]
|
|
329
|
+
}),
|
|
330
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
331
|
+
gap: 1,
|
|
332
|
+
children: linkButton
|
|
256
333
|
})
|
|
257
334
|
]
|
|
258
335
|
})
|
|
@@ -400,6 +477,7 @@ const SubNav = {
|
|
|
400
477
|
Sections,
|
|
401
478
|
Section,
|
|
402
479
|
SubSection,
|
|
480
|
+
Folder: SubNavFolder.SubNavFolder,
|
|
403
481
|
PageWrapper
|
|
404
482
|
};
|
|
405
483
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n} from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\n\nconst MainSubNav = styled(DSSubNav)<{ $isFullPage?: boolean }>`\n width: 100%;\n height: 100%;\n overflow: ${({ $isFullPage }) => ($isFullPage ? 'visible' : 'hidden')};\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: relative;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: ${WIDTH_SIDE_NAVIGATION};\n position: sticky;\n top: 0;\n overflow: hidden;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n overscroll-behavior: contain;\n }\n`;\n\nconst Main = ({\n children,\n isFullPage,\n ...props\n}: {\n children: React.ReactNode;\n isFullPage?: boolean;\n}) => (\n <MainSubNav $isFullPage={isFullPage} {...props}>\n {children}\n </MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label'> & {\n label: React.ReactNode;\n endAction?: React.ReactNode;\n handleClick?: () => void;\n }\n) => {\n const { label, endAction, handleClick, ...rest } = props;\n\n return (\n <StyledLink {...rest} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingLeft={3}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n width={{ initial: '80dvw', medium: '100%' }}\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {label}\n </Typography>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: WIDTH_SIDE_NAVIGATION }}\n >\n <Flex tag=\"ul\" gap={6} direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: { label: string; onClick: () => void };\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex>\n <Box>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n </Box>\n </Flex>\n <Flex gap={1}>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n {link && (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n label={link.label}\n variant=\"ghost\"\n withTooltip\n onClick={link.onClick}\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n )}\n </Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n width: 100%;\n\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n overflow: hidden;\n\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","$isFullPage","theme","colors","neutral0","breakpoints","medium","WIDTH_SIDE_NAVIGATION","neutral150","Main","children","isFullPage","props","_jsx","StyledLink","NavLink","neutral800","primary100","primary700","neutral100","Link","label","endAction","handleClick","rest","onClick","Box","width","paddingLeft","paddingRight","paddingTop","initial","large","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","variant","Sections","maxWidth","direction","alignItems","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","position","textColor","Badge","backgroundColor","IconButton","withTooltip","size","Plus","id","marginLeft","marginRight","SubSectionHeader","button","spaces","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useRef","useEffect","current","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","aria-hidden","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","Content","ScrollArea","SubNav"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState, useMemo } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n Menu,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n} from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\nimport { SubNavFolder } from './SubNavFolder';\n\nconst MainSubNav = styled(DSSubNav)<{ $isFullPage?: boolean }>`\n width: 100%;\n height: 100%;\n overflow: ${({ $isFullPage }) => ($isFullPage ? 'visible' : 'hidden')};\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: relative;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: ${WIDTH_SIDE_NAVIGATION};\n position: sticky;\n top: 0;\n overflow: hidden;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n overscroll-behavior: contain;\n }\n`;\n\nconst Main = ({\n children,\n isFullPage,\n ...props\n}: {\n children: React.ReactNode;\n isFullPage?: boolean;\n}) => (\n <MainSubNav $isFullPage={isFullPage} {...props}>\n {children}\n </MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)<{ $depth?: number }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n & > div {\n padding-left: ${({ theme, $depth = 0 }) =>\n `calc(${$depth} * ${theme.spaces[6]} + ${theme.spaces[3]})`};\n }\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst LinkBullet = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 16px;\n\n &::before {\n content: '';\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background-color: currentColor;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label' | '$depth'> & {\n endAction?: React.ReactNode;\n handleClick?: () => void;\n label: React.ReactNode;\n depth?: number;\n bulleted?: boolean;\n }\n) => {\n const { label, endAction, handleClick, depth, bulleted = false, ...rest } = props;\n\n return (\n <StyledLink {...rest} $depth={depth} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Flex gap={2} flex=\"1\" minWidth=\"0\" alignItems=\"center\">\n {bulleted && <LinkBullet aria-hidden />}\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap', flex: 1, minWidth: 0 }}\n >\n {label}\n </Typography>\n </Flex>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: WIDTH_SIDE_NAVIGATION }}\n >\n <Flex tag=\"ul\" gap={6} direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\ntype SectionMenuItem = {\n startIcon?: React.ReactNode;\n onSelect: () => void;\n label: string;\n};\n\ntype SectionLink = {\n label: string;\n onClick?: () => void;\n menu?: SectionMenuItem[];\n /**\n * This suppresses the default behavior, where input focus returns to the \"+\" trigger when the popover closes.\n * This allows popover actions to change the focused element without it being immediately undone.\n */\n suppressFocusCaptureOnMenuClose?: boolean;\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: SectionLink;\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n // Used to track the selection of an item within the popover menu (as opposed to a menu dismissal via escape, click outside, etc.)\n const popoverMenuItemClicked = useRef(false);\n\n const linkButton = useMemo(() => {\n if (!link) return;\n\n if (!link.menu) {\n return (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n onClick={link.onClick}\n label={link.label}\n variant=\"ghost\"\n withTooltip\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n );\n }\n\n const onCloseMenuAutoFocus = (event: Event): void => {\n // If the result of a popover menu close deliberately shifts focus, the default Radix behavior (immediately restore focus on the popover's trigger element when the popover closes) would compete.\n if (link.suppressFocusCaptureOnMenuClose && popoverMenuItemClicked.current) {\n event.preventDefault();\n }\n\n popoverMenuItemClicked.current = false;\n };\n\n return (\n <GuidedTourTooltip sectionId={sectionId}>\n <Menu.Root>\n <Menu.Trigger\n label={link.label}\n tag={IconButton}\n icon={<Plus />}\n variant=\"ghost\"\n endIcon={null}\n size=\"XS\"\n />\n <Menu.Content onCloseAutoFocus={onCloseMenuAutoFocus} zIndex={2}>\n {link.menu.map((item) => {\n const onSelectMenuItem = () => {\n popoverMenuItemClicked.current = true;\n item.onSelect();\n };\n\n return (\n <Menu.Item onSelect={onSelectMenuItem} startIcon={item.startIcon} key={item.label}>\n {item.label}\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Root>\n </GuidedTourTooltip>\n );\n }, [link, sectionId]);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex gap={2} alignItems=\"center\" minWidth={0}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n </Flex>\n <Flex gap={1}>{linkButton}</Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n width: 100%;\n\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n overflow: hidden;\n\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n Folder: SubNavFolder,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","$isFullPage","theme","colors","neutral0","breakpoints","medium","WIDTH_SIDE_NAVIGATION","neutral150","Main","children","isFullPage","props","_jsx","StyledLink","NavLink","neutral800","$depth","spaces","primary100","primary700","neutral100","LinkBullet","span","Link","label","endAction","handleClick","depth","bulleted","rest","onClick","Box","width","paddingRight","paddingTop","initial","large","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","flex","minWidth","alignItems","aria-hidden","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","paddingLeft","variant","Sections","maxWidth","direction","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","popoverMenuItemClicked","useRef","linkButton","useMemo","menu","IconButton","withTooltip","size","Plus","onCloseMenuAutoFocus","event","suppressFocusCaptureOnMenuClose","current","preventDefault","Menu","Root","Trigger","icon","endIcon","Content","onCloseAutoFocus","zIndex","item","onSelectMenuItem","onSelect","Item","startIcon","position","textColor","Badge","backgroundColor","id","marginLeft","marginRight","SubSectionHeader","button","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useEffect","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","ScrollArea","SubNav","Folder","SubNavFolder"],"mappings":"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"}
|