@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.
Files changed (92) hide show
  1. package/dist/admin/admin/src/components/LanguageProvider.js +35 -1
  2. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  3. package/dist/admin/admin/src/components/LanguageProvider.mjs +17 -2
  4. package/dist/admin/admin/src/components/LanguageProvider.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/SubNav.js +113 -35
  6. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  7. package/dist/admin/admin/src/components/SubNav.mjs +115 -37
  8. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/SubNavFolder.js +188 -0
  10. package/dist/admin/admin/src/components/SubNavFolder.js.map +1 -0
  11. package/dist/admin/admin/src/components/SubNavFolder.mjs +186 -0
  12. package/dist/admin/admin/src/components/SubNavFolder.mjs.map +1 -0
  13. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  14. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  15. package/dist/admin/admin/src/render.js +1 -1
  16. package/dist/admin/admin/src/render.js.map +1 -1
  17. package/dist/admin/admin/src/render.mjs +1 -1
  18. package/dist/admin/admin/src/render.mjs.map +1 -1
  19. package/dist/admin/admin/src/translations/en.json.js +4 -0
  20. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  21. package/dist/admin/admin/src/translations/en.json.mjs +4 -0
  22. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  23. package/dist/admin/ee/admin/src/hooks/useAIAvailability.js +1 -6
  24. package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -1
  25. package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs +1 -6
  26. package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -1
  27. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +7 -1
  28. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  29. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +7 -1
  30. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  31. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +5 -1
  32. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  33. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +5 -1
  34. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  35. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +0 -4
  36. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  37. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +0 -4
  38. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  39. package/dist/admin/src/components/SubNav.d.ts +27 -8
  40. package/dist/admin/src/components/SubNavFolder.d.ts +15 -0
  41. package/dist/admin/src/features/Tracking.d.ts +2 -1
  42. package/dist/admin/src/services/admin.d.ts +1 -0
  43. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +4 -0
  44. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  45. package/dist/ee/server/src/index.d.ts.map +1 -1
  46. package/dist/server/ee/server/src/controllers/admin.js +1 -5
  47. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  48. package/dist/server/ee/server/src/controllers/admin.mjs +1 -5
  49. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  50. package/dist/server/ee/server/src/index.js +2 -0
  51. package/dist/server/ee/server/src/index.js.map +1 -1
  52. package/dist/server/ee/server/src/index.mjs +2 -0
  53. package/dist/server/ee/server/src/index.mjs.map +1 -1
  54. package/dist/server/server/src/ai/controllers/ai.js +3 -3
  55. package/dist/server/server/src/ai/controllers/ai.js.map +1 -1
  56. package/dist/server/server/src/ai/controllers/ai.mjs +3 -3
  57. package/dist/server/server/src/ai/controllers/ai.mjs.map +1 -1
  58. package/dist/server/server/src/ai/services/ai.js +37 -12
  59. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  60. package/dist/server/server/src/ai/services/ai.mjs +37 -12
  61. package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
  62. package/dist/server/server/src/audit-logs/tokens.js +106 -0
  63. package/dist/server/server/src/audit-logs/tokens.js.map +1 -0
  64. package/dist/server/server/src/audit-logs/tokens.mjs +99 -0
  65. package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -0
  66. package/dist/server/server/src/controllers/admin.js +10 -1
  67. package/dist/server/server/src/controllers/admin.js.map +1 -1
  68. package/dist/server/server/src/controllers/admin.mjs +10 -1
  69. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  70. package/dist/server/server/src/services/api-token.js +106 -4
  71. package/dist/server/server/src/services/api-token.js.map +1 -1
  72. package/dist/server/server/src/services/api-token.mjs +107 -5
  73. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  74. package/dist/server/server/src/services/transfer/token.js +56 -4
  75. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  76. package/dist/server/server/src/services/transfer/token.mjs +57 -5
  77. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  78. package/dist/server/src/ai/services/ai.d.ts +3 -1
  79. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  80. package/dist/server/src/audit-logs/tokens.d.ts +86 -0
  81. package/dist/server/src/audit-logs/tokens.d.ts.map +1 -0
  82. package/dist/server/src/controllers/admin.d.ts +1 -0
  83. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  84. package/dist/server/src/controllers/index.d.ts +1 -0
  85. package/dist/server/src/controllers/index.d.ts.map +1 -1
  86. package/dist/server/src/index.d.ts +1 -0
  87. package/dist/server/src/index.d.ts.map +1 -1
  88. package/dist/server/src/services/api-token.d.ts.map +1 -1
  89. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  90. package/dist/shared/contracts/admin.d.ts +1 -0
  91. package/dist/shared/contracts/admin.d.ts.map +1 -1
  92. 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 locale={locale} defaultLocale=\"en\" messages={appMessages} textComponent=\"span\">\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","_jsx","IntlProvider","defaultLocale","textComponent"],"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,qBACEC,cAAA,CAACC,sBAAAA,EAAAA;QAAaT,MAAAA,EAAQA,MAAAA;QAAQU,aAAAA,EAAc,IAAA;QAAKX,QAAAA,EAAUM,WAAAA;QAAaM,aAAAA,EAAc,MAAA;AACnFb,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
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 locale={locale} defaultLocale=\"en\" messages={appMessages} textComponent=\"span\">\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","_jsx","IntlProvider","defaultLocale","textComponent"],"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,qBACEC,GAAA,CAACC,YAAAA,EAAAA;QAAaT,MAAAA,EAAQA,MAAAA;QAAQU,aAAAA,EAAc,IAAA;QAAKX,QAAAA,EAAUM,WAAAA;QAAaM,aAAAA,EAAc,MAAA;AACnFb,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
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.jsx(designSystem.Typography, {
103
- tag: "div",
104
- lineHeight: "32px",
105
- width: {
106
- initial: '80dvw',
107
- medium: '100%'
108
- },
109
- overflow: "hidden",
110
- style: {
111
- textOverflow: 'ellipsis',
112
- whiteSpace: 'nowrap'
113
- },
114
- children: label
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.jsx(designSystem.Flex, {
228
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
229
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
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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"}