@strapi/content-type-builder 5.31.2 → 5.32.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 (95) hide show
  1. package/dist/admin/components/AIChat/Chat.js +4 -1
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -1
  3. package/dist/admin/components/AIChat/Chat.mjs +5 -2
  4. package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/FeedbackModal.js +1 -0
  6. package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
  7. package/dist/admin/components/AIChat/FeedbackModal.mjs +1 -0
  8. package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
  9. package/dist/admin/components/AIChat/UploadFigmaModal.js +1 -0
  10. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
  11. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -0
  12. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
  13. package/dist/admin/components/AIChat/components/Messages/Message.js +7 -1
  14. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  15. package/dist/admin/components/AIChat/components/Messages/Message.mjs +7 -1
  16. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
  17. package/dist/admin/components/AIChat/hooks/useFeedback.js +4 -1
  18. package/dist/admin/components/AIChat/hooks/useFeedback.js.map +1 -1
  19. package/dist/admin/components/AIChat/hooks/useFeedback.mjs +5 -2
  20. package/dist/admin/components/AIChat/hooks/useFeedback.mjs.map +1 -1
  21. package/dist/admin/components/AIChat/providers/ChatProvider.js +3 -2
  22. package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -1
  23. package/dist/admin/components/AIChat/providers/ChatProvider.mjs +3 -2
  24. package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -1
  25. package/dist/admin/components/AttributeOptions/AttributeList.js +1 -0
  26. package/dist/admin/components/AttributeOptions/AttributeList.js.map +1 -1
  27. package/dist/admin/components/AttributeOptions/AttributeList.mjs +1 -0
  28. package/dist/admin/components/AttributeOptions/AttributeList.mjs.map +1 -1
  29. package/dist/admin/components/AttributeOptions/CustomFieldsList.js +1 -0
  30. package/dist/admin/components/AttributeOptions/CustomFieldsList.js.map +1 -1
  31. package/dist/admin/components/AttributeOptions/CustomFieldsList.mjs +1 -0
  32. package/dist/admin/components/AttributeOptions/CustomFieldsList.mjs.map +1 -1
  33. package/dist/admin/components/CTBSession/CTBSessionProvider.js +49 -0
  34. package/dist/admin/components/CTBSession/CTBSessionProvider.js.map +1 -0
  35. package/dist/admin/components/CTBSession/CTBSessionProvider.mjs +46 -0
  36. package/dist/admin/components/CTBSession/CTBSessionProvider.mjs.map +1 -0
  37. package/dist/admin/components/CTBSession/sessionContext.js +8 -0
  38. package/dist/admin/components/CTBSession/sessionContext.js.map +1 -0
  39. package/dist/admin/components/CTBSession/sessionContext.mjs +6 -0
  40. package/dist/admin/components/CTBSession/sessionContext.mjs.map +1 -0
  41. package/dist/admin/components/CTBSession/useCTBSession.js +25 -0
  42. package/dist/admin/components/CTBSession/useCTBSession.js.map +1 -0
  43. package/dist/admin/components/CTBSession/useCTBSession.mjs +23 -0
  44. package/dist/admin/components/CTBSession/useCTBSession.mjs.map +1 -0
  45. package/dist/admin/components/CTBSession/useCTBTracking.js +37 -0
  46. package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -0
  47. package/dist/admin/components/CTBSession/useCTBTracking.mjs +35 -0
  48. package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -0
  49. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +4 -2
  50. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  51. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +4 -2
  52. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
  53. package/dist/admin/components/DataManager/DataManagerProvider.js +40 -3
  54. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  55. package/dist/admin/components/DataManager/DataManagerProvider.mjs +41 -4
  56. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  57. package/dist/admin/components/FormModal/FormModal.js +3 -1
  58. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  59. package/dist/admin/components/FormModal/FormModal.mjs +4 -2
  60. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  61. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +14 -1
  62. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
  63. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +14 -1
  64. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
  65. package/dist/admin/components/List.js +3 -1
  66. package/dist/admin/components/List.js.map +1 -1
  67. package/dist/admin/components/List.mjs +4 -2
  68. package/dist/admin/components/List.mjs.map +1 -1
  69. package/dist/admin/components/TabForm.js +3 -0
  70. package/dist/admin/components/TabForm.js.map +1 -1
  71. package/dist/admin/components/TabForm.mjs +3 -0
  72. package/dist/admin/components/TabForm.mjs.map +1 -1
  73. package/dist/admin/pages/App/index.js +42 -38
  74. package/dist/admin/pages/App/index.js.map +1 -1
  75. package/dist/admin/pages/App/index.mjs +42 -38
  76. package/dist/admin/pages/App/index.mjs.map +1 -1
  77. package/dist/admin/pages/ListView/ListView.js +10 -1
  78. package/dist/admin/pages/ListView/ListView.js.map +1 -1
  79. package/dist/admin/pages/ListView/ListView.mjs +11 -2
  80. package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
  81. package/dist/admin/src/components/CTBSession/CTBSessionProvider.d.ts +26 -0
  82. package/dist/admin/src/components/CTBSession/ctbSession.d.ts +5 -0
  83. package/dist/admin/src/components/CTBSession/sessionContext.d.ts +25 -0
  84. package/dist/admin/src/components/CTBSession/useCTBSession.d.ts +12 -0
  85. package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +13 -0
  86. package/dist/server/controllers/content-types.js +6 -0
  87. package/dist/server/controllers/content-types.js.map +1 -1
  88. package/dist/server/controllers/content-types.mjs +6 -0
  89. package/dist/server/controllers/content-types.mjs.map +1 -1
  90. package/dist/server/controllers/validation/types.js +1 -1
  91. package/dist/server/controllers/validation/types.js.map +1 -1
  92. package/dist/server/controllers/validation/types.mjs +1 -1
  93. package/dist/server/controllers/validation/types.mjs.map +1 -1
  94. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  95. package/package.json +10 -10
@@ -3,6 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var strapiAdmin = require('@strapi/admin/strapi-admin');
6
+ var ee = require('@strapi/admin/strapi-admin/ee');
6
7
  var reactIntl = require('react-intl');
7
8
  var reactRouterDom = require('react-router-dom');
8
9
  var Chat = require('../../components/AIChat/Chat.js');
@@ -10,6 +11,7 @@ var aiClient = require('../../components/AIChat/lib/aiClient.js');
10
11
  var ChatProvider = require('../../components/AIChat/providers/ChatProvider.js');
11
12
  var AutoReloadOverlayBlocker = require('../../components/AutoReloadOverlayBlocker.js');
12
13
  var ContentTypeBuilderNav = require('../../components/ContentTypeBuilderNav/ContentTypeBuilderNav.js');
14
+ var CTBSessionProvider = require('../../components/CTBSession/CTBSessionProvider.js');
13
15
  var DataManagerProvider = require('../../components/DataManager/DataManagerProvider.js');
14
16
  var ExitPrompt = require('../../components/ExitPrompt.js');
15
17
  var FormModal = require('../../components/FormModal/FormModal.js');
@@ -28,7 +30,7 @@ const App = ()=>{
28
30
  defaultMessage: 'Content Types Builder'
29
31
  });
30
32
  const autoReload = strapiAdmin.useAppInfo('DataManagerProvider', (state)=>state.autoReload);
31
- const isAIEnabled = strapiAdmin.useAIAvailability();
33
+ const isAIEnabled = ee.useAIAvailability();
32
34
  const state = strapiAdmin.useGuidedTour('ContentTypeBuilderApp', (s)=>s.state);
33
35
  const dispatch = strapiAdmin.useGuidedTour('ContentTypeBuilderApp', (s)=>s.dispatch);
34
36
  // Prefetch AI token on initial load
@@ -60,45 +62,47 @@ const App = ()=>{
60
62
  children: title
61
63
  }),
62
64
  /*#__PURE__*/ jsxRuntime.jsx(AutoReloadOverlayBlocker.AutoReloadOverlayBlockerProvider, {
63
- children: /*#__PURE__*/ jsxRuntime.jsx(FormModalNavigationProvider.FormModalNavigationProvider, {
64
- children: /*#__PURE__*/ jsxRuntime.jsxs(DataManagerProvider, {
65
- children: [
66
- /*#__PURE__*/ jsxRuntime.jsx(ExitPrompt.ExitPrompt, {}),
67
- /*#__PURE__*/ jsxRuntime.jsx(ChatProvider.ChatProvider, {
68
- children: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
69
- children: [
70
- autoReload && /*#__PURE__*/ jsxRuntime.jsx(FormModal.FormModal, {}),
71
- /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Root, {
72
- sideNav: /*#__PURE__*/ jsxRuntime.jsx(ContentTypeBuilderNav.ContentTypeBuilderNav, {}),
73
- children: /*#__PURE__*/ jsxRuntime.jsx(React.Suspense, {
74
- fallback: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {}),
75
- children: /*#__PURE__*/ jsxRuntime.jsxs(reactRouterDom.Routes, {
76
- children: [
77
- /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
78
- path: "content-types/create-content-type",
79
- element: /*#__PURE__*/ jsxRuntime.jsx(EmptyState.EmptyState, {})
80
- }),
81
- /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
82
- path: "content-types/:contentTypeUid",
83
- element: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
84
- }),
85
- /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
86
- path: `component-categories/:categoryUid/:componentUid`,
87
- element: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
88
- }),
89
- /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
90
- path: "*",
91
- element: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
92
- })
93
- ]
65
+ children: /*#__PURE__*/ jsxRuntime.jsx(CTBSessionProvider.CTBSessionProvider, {
66
+ children: /*#__PURE__*/ jsxRuntime.jsx(FormModalNavigationProvider.FormModalNavigationProvider, {
67
+ children: /*#__PURE__*/ jsxRuntime.jsxs(DataManagerProvider, {
68
+ children: [
69
+ /*#__PURE__*/ jsxRuntime.jsx(ExitPrompt.ExitPrompt, {}),
70
+ /*#__PURE__*/ jsxRuntime.jsx(ChatProvider.ChatProvider, {
71
+ children: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
72
+ children: [
73
+ autoReload && /*#__PURE__*/ jsxRuntime.jsx(FormModal.FormModal, {}),
74
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Root, {
75
+ sideNav: /*#__PURE__*/ jsxRuntime.jsx(ContentTypeBuilderNav.ContentTypeBuilderNav, {}),
76
+ children: /*#__PURE__*/ jsxRuntime.jsx(React.Suspense, {
77
+ fallback: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {}),
78
+ children: /*#__PURE__*/ jsxRuntime.jsxs(reactRouterDom.Routes, {
79
+ children: [
80
+ /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
81
+ path: "content-types/create-content-type",
82
+ element: /*#__PURE__*/ jsxRuntime.jsx(EmptyState.EmptyState, {})
83
+ }),
84
+ /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
85
+ path: "content-types/:contentTypeUid",
86
+ element: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
87
+ }),
88
+ /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
89
+ path: `component-categories/:categoryUid/:componentUid`,
90
+ element: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
91
+ }),
92
+ /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
93
+ path: "*",
94
+ element: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
95
+ })
96
+ ]
97
+ })
94
98
  })
95
- })
96
- }),
97
- /*#__PURE__*/ jsxRuntime.jsx(Chat.Chat, {})
98
- ]
99
+ }),
100
+ /*#__PURE__*/ jsxRuntime.jsx(Chat.Chat, {})
101
+ ]
102
+ })
99
103
  })
100
- })
101
- ]
104
+ ]
105
+ })
102
106
  })
103
107
  })
104
108
  })
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport {\n Page,\n Layouts,\n useAppInfo,\n useGuidedTour,\n useAIAvailability,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport { prefetchAIToken } from '../../components/AIChat/lib/aiClient';\nimport { ChatProvider } from '../../components/AIChat/providers/ChatProvider';\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const isAIEnabled = useAIAvailability();\n const state = useGuidedTour('ContentTypeBuilderApp', (s) => s.state);\n const dispatch = useGuidedTour('ContentTypeBuilderApp', (s) => s.dispatch);\n\n // Prefetch AI token on initial load\n useEffect(() => {\n prefetchAIToken();\n }, []);\n\n // Set tour type based on AI availability when the app loads\n useEffect(() => {\n const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';\n const currentTourType = state.tours.contentTypeBuilder.tourType;\n\n if (currentTourType !== tourType) {\n dispatch({\n type: 'set_tour_type',\n payload: { tourName: 'contentTypeBuilder', tourType },\n });\n }\n }, [isAIEnabled, state.tours.contentTypeBuilder.tourType, dispatch]);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <FormModalNavigationProvider>\n <DataManagerProvider>\n <ExitPrompt />\n <ChatProvider>\n <>\n {autoReload && <FormModal />}\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/create-content-type\" element={<EmptyState />} />\n <Route path=\"content-types/:contentTypeUid\" element={<ListView />} />\n <Route\n path={`component-categories/:categoryUid/:componentUid`}\n element={<ListView />}\n />\n <Route path=\"*\" element={<ListView />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n <Chat />\n </>\n </ChatProvider>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["ListView","lazy","App","formatMessage","useIntl","title","id","pluginId","defaultMessage","autoReload","useAppInfo","state","isAIEnabled","useAIAvailability","useGuidedTour","s","dispatch","useEffect","prefetchAIToken","tourType","currentTourType","tours","contentTypeBuilder","type","payload","tourName","_jsxs","Page","Protect","permissions","PERMISSIONS","main","_jsx","Title","AutoReloadOverlayBlockerProvider","FormModalNavigationProvider","DataManagerProvider","ExitPrompt","ChatProvider","_Fragment","FormModal","Layouts","Root","sideNav","ContentTypeBuilderNav","Suspense","fallback","Loading","Routes","Route","path","element","EmptyState","Chat"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, Layouts, useAppInfo, useGuidedTour } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport { prefetchAIToken } from '../../components/AIChat/lib/aiClient';\nimport { ChatProvider } from '../../components/AIChat/providers/ChatProvider';\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport { CTBSessionProvider } from '../../components/CTBSession/CTBSessionProvider';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const isAIEnabled = useAIAvailability();\n const state = useGuidedTour('ContentTypeBuilderApp', (s) => s.state);\n const dispatch = useGuidedTour('ContentTypeBuilderApp', (s) => s.dispatch);\n\n // Prefetch AI token on initial load\n useEffect(() => {\n prefetchAIToken();\n }, []);\n\n // Set tour type based on AI availability when the app loads\n useEffect(() => {\n const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';\n const currentTourType = state.tours.contentTypeBuilder.tourType;\n\n if (currentTourType !== tourType) {\n dispatch({\n type: 'set_tour_type',\n payload: { tourName: 'contentTypeBuilder', tourType },\n });\n }\n }, [isAIEnabled, state.tours.contentTypeBuilder.tourType, dispatch]);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <CTBSessionProvider>\n <FormModalNavigationProvider>\n <DataManagerProvider>\n <ExitPrompt />\n <ChatProvider>\n <>\n {autoReload && <FormModal />}\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/create-content-type\" element={<EmptyState />} />\n <Route path=\"content-types/:contentTypeUid\" element={<ListView />} />\n <Route\n path={`component-categories/:categoryUid/:componentUid`}\n element={<ListView />}\n />\n <Route path=\"*\" element={<ListView />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n <Chat />\n </>\n </ChatProvider>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </CTBSessionProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["ListView","lazy","App","formatMessage","useIntl","title","id","pluginId","defaultMessage","autoReload","useAppInfo","state","isAIEnabled","useAIAvailability","useGuidedTour","s","dispatch","useEffect","prefetchAIToken","tourType","currentTourType","tours","contentTypeBuilder","type","payload","tourName","_jsxs","Page","Protect","permissions","PERMISSIONS","main","_jsx","Title","AutoReloadOverlayBlockerProvider","CTBSessionProvider","FormModalNavigationProvider","DataManagerProvider","ExitPrompt","ChatProvider","_Fragment","FormModal","Layouts","Root","sideNav","ContentTypeBuilderNav","Suspense","fallback","Loading","Routes","Route","path","element","EmptyState","Chat"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useEffect, Suspense, lazy } from 'react';
3
- import { useAppInfo, useAIAvailability, useGuidedTour, Page, Layouts } from '@strapi/admin/strapi-admin';
3
+ import { useAppInfo, useGuidedTour, Page, Layouts } from '@strapi/admin/strapi-admin';
4
+ import { useAIAvailability } from '@strapi/admin/strapi-admin/ee';
4
5
  import { useIntl } from 'react-intl';
5
6
  import { Routes, Route } from 'react-router-dom';
6
7
  import { Chat } from '../../components/AIChat/Chat.mjs';
@@ -8,6 +9,7 @@ import { prefetchAIToken } from '../../components/AIChat/lib/aiClient.mjs';
8
9
  import { ChatProvider } from '../../components/AIChat/providers/ChatProvider.mjs';
9
10
  import { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker.mjs';
10
11
  import { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs';
12
+ import { CTBSessionProvider } from '../../components/CTBSession/CTBSessionProvider.mjs';
11
13
  import DataManagerProvider from '../../components/DataManager/DataManagerProvider.mjs';
12
14
  import { ExitPrompt } from '../../components/ExitPrompt.mjs';
13
15
  import { FormModal } from '../../components/FormModal/FormModal.mjs';
@@ -56,45 +58,47 @@ const App = ()=>{
56
58
  children: title
57
59
  }),
58
60
  /*#__PURE__*/ jsx(AutoReloadOverlayBlockerProvider, {
59
- children: /*#__PURE__*/ jsx(FormModalNavigationProvider, {
60
- children: /*#__PURE__*/ jsxs(DataManagerProvider, {
61
- children: [
62
- /*#__PURE__*/ jsx(ExitPrompt, {}),
63
- /*#__PURE__*/ jsx(ChatProvider, {
64
- children: /*#__PURE__*/ jsxs(Fragment, {
65
- children: [
66
- autoReload && /*#__PURE__*/ jsx(FormModal, {}),
67
- /*#__PURE__*/ jsx(Layouts.Root, {
68
- sideNav: /*#__PURE__*/ jsx(ContentTypeBuilderNav, {}),
69
- children: /*#__PURE__*/ jsx(Suspense, {
70
- fallback: /*#__PURE__*/ jsx(Page.Loading, {}),
71
- children: /*#__PURE__*/ jsxs(Routes, {
72
- children: [
73
- /*#__PURE__*/ jsx(Route, {
74
- path: "content-types/create-content-type",
75
- element: /*#__PURE__*/ jsx(EmptyState, {})
76
- }),
77
- /*#__PURE__*/ jsx(Route, {
78
- path: "content-types/:contentTypeUid",
79
- element: /*#__PURE__*/ jsx(ListView, {})
80
- }),
81
- /*#__PURE__*/ jsx(Route, {
82
- path: `component-categories/:categoryUid/:componentUid`,
83
- element: /*#__PURE__*/ jsx(ListView, {})
84
- }),
85
- /*#__PURE__*/ jsx(Route, {
86
- path: "*",
87
- element: /*#__PURE__*/ jsx(ListView, {})
88
- })
89
- ]
61
+ children: /*#__PURE__*/ jsx(CTBSessionProvider, {
62
+ children: /*#__PURE__*/ jsx(FormModalNavigationProvider, {
63
+ children: /*#__PURE__*/ jsxs(DataManagerProvider, {
64
+ children: [
65
+ /*#__PURE__*/ jsx(ExitPrompt, {}),
66
+ /*#__PURE__*/ jsx(ChatProvider, {
67
+ children: /*#__PURE__*/ jsxs(Fragment, {
68
+ children: [
69
+ autoReload && /*#__PURE__*/ jsx(FormModal, {}),
70
+ /*#__PURE__*/ jsx(Layouts.Root, {
71
+ sideNav: /*#__PURE__*/ jsx(ContentTypeBuilderNav, {}),
72
+ children: /*#__PURE__*/ jsx(Suspense, {
73
+ fallback: /*#__PURE__*/ jsx(Page.Loading, {}),
74
+ children: /*#__PURE__*/ jsxs(Routes, {
75
+ children: [
76
+ /*#__PURE__*/ jsx(Route, {
77
+ path: "content-types/create-content-type",
78
+ element: /*#__PURE__*/ jsx(EmptyState, {})
79
+ }),
80
+ /*#__PURE__*/ jsx(Route, {
81
+ path: "content-types/:contentTypeUid",
82
+ element: /*#__PURE__*/ jsx(ListView, {})
83
+ }),
84
+ /*#__PURE__*/ jsx(Route, {
85
+ path: `component-categories/:categoryUid/:componentUid`,
86
+ element: /*#__PURE__*/ jsx(ListView, {})
87
+ }),
88
+ /*#__PURE__*/ jsx(Route, {
89
+ path: "*",
90
+ element: /*#__PURE__*/ jsx(ListView, {})
91
+ })
92
+ ]
93
+ })
90
94
  })
91
- })
92
- }),
93
- /*#__PURE__*/ jsx(Chat, {})
94
- ]
95
+ }),
96
+ /*#__PURE__*/ jsx(Chat, {})
97
+ ]
98
+ })
95
99
  })
96
- })
97
- ]
100
+ ]
101
+ })
98
102
  })
99
103
  })
100
104
  })
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport {\n Page,\n Layouts,\n useAppInfo,\n useGuidedTour,\n useAIAvailability,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport { prefetchAIToken } from '../../components/AIChat/lib/aiClient';\nimport { ChatProvider } from '../../components/AIChat/providers/ChatProvider';\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const isAIEnabled = useAIAvailability();\n const state = useGuidedTour('ContentTypeBuilderApp', (s) => s.state);\n const dispatch = useGuidedTour('ContentTypeBuilderApp', (s) => s.dispatch);\n\n // Prefetch AI token on initial load\n useEffect(() => {\n prefetchAIToken();\n }, []);\n\n // Set tour type based on AI availability when the app loads\n useEffect(() => {\n const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';\n const currentTourType = state.tours.contentTypeBuilder.tourType;\n\n if (currentTourType !== tourType) {\n dispatch({\n type: 'set_tour_type',\n payload: { tourName: 'contentTypeBuilder', tourType },\n });\n }\n }, [isAIEnabled, state.tours.contentTypeBuilder.tourType, dispatch]);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <FormModalNavigationProvider>\n <DataManagerProvider>\n <ExitPrompt />\n <ChatProvider>\n <>\n {autoReload && <FormModal />}\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/create-content-type\" element={<EmptyState />} />\n <Route path=\"content-types/:contentTypeUid\" element={<ListView />} />\n <Route\n path={`component-categories/:categoryUid/:componentUid`}\n element={<ListView />}\n />\n <Route path=\"*\" element={<ListView />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n <Chat />\n </>\n </ChatProvider>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["ListView","lazy","App","formatMessage","useIntl","title","id","pluginId","defaultMessage","autoReload","useAppInfo","state","isAIEnabled","useAIAvailability","useGuidedTour","s","dispatch","useEffect","prefetchAIToken","tourType","currentTourType","tours","contentTypeBuilder","type","payload","tourName","_jsxs","Page","Protect","permissions","PERMISSIONS","main","_jsx","Title","AutoReloadOverlayBlockerProvider","FormModalNavigationProvider","DataManagerProvider","ExitPrompt","ChatProvider","_Fragment","FormModal","Layouts","Root","sideNav","ContentTypeBuilderNav","Suspense","fallback","Loading","Routes","Route","path","element","EmptyState","Chat"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, Layouts, useAppInfo, useGuidedTour } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport { prefetchAIToken } from '../../components/AIChat/lib/aiClient';\nimport { ChatProvider } from '../../components/AIChat/providers/ChatProvider';\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport { CTBSessionProvider } from '../../components/CTBSession/CTBSessionProvider';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const isAIEnabled = useAIAvailability();\n const state = useGuidedTour('ContentTypeBuilderApp', (s) => s.state);\n const dispatch = useGuidedTour('ContentTypeBuilderApp', (s) => s.dispatch);\n\n // Prefetch AI token on initial load\n useEffect(() => {\n prefetchAIToken();\n }, []);\n\n // Set tour type based on AI availability when the app loads\n useEffect(() => {\n const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';\n const currentTourType = state.tours.contentTypeBuilder.tourType;\n\n if (currentTourType !== tourType) {\n dispatch({\n type: 'set_tour_type',\n payload: { tourName: 'contentTypeBuilder', tourType },\n });\n }\n }, [isAIEnabled, state.tours.contentTypeBuilder.tourType, dispatch]);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <CTBSessionProvider>\n <FormModalNavigationProvider>\n <DataManagerProvider>\n <ExitPrompt />\n <ChatProvider>\n <>\n {autoReload && <FormModal />}\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/create-content-type\" element={<EmptyState />} />\n <Route path=\"content-types/:contentTypeUid\" element={<ListView />} />\n <Route\n path={`component-categories/:categoryUid/:componentUid`}\n element={<ListView />}\n />\n <Route path=\"*\" element={<ListView />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n <Chat />\n </>\n </ChatProvider>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </CTBSessionProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["ListView","lazy","App","formatMessage","useIntl","title","id","pluginId","defaultMessage","autoReload","useAppInfo","state","isAIEnabled","useAIAvailability","useGuidedTour","s","dispatch","useEffect","prefetchAIToken","tourType","currentTourType","tours","contentTypeBuilder","type","payload","tourName","_jsxs","Page","Protect","permissions","PERMISSIONS","main","_jsx","Title","AutoReloadOverlayBlockerProvider","CTBSessionProvider","FormModalNavigationProvider","DataManagerProvider","ExitPrompt","ChatProvider","_Fragment","FormModal","Layouts","Root","sideNav","ContentTypeBuilderNav","Suspense","fallback","Loading","Routes","Route","path","element","EmptyState","Chat"],"mappings":"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"}
@@ -8,6 +8,9 @@ var upperFirst = require('lodash/upperFirst');
8
8
  var reactIntl = require('react-intl');
9
9
  var reactRouterDom = require('react-router-dom');
10
10
  var styledComponents = require('styled-components');
11
+ require('react');
12
+ require('../../components/CTBSession/sessionContext.js');
13
+ var useCTBTracking = require('../../components/CTBSession/useCTBTracking.js');
11
14
  var useDataManager = require('../../components/DataManager/useDataManager.js');
12
15
  var useFormModalNavigation = require('../../components/FormModalNavigation/useFormModalNavigation.js');
13
16
  var List = require('../../components/List.js');
@@ -22,7 +25,7 @@ const LayoutsHeaderCustom = styledComponents.styled(strapiAdmin.Layouts.Header)`
22
25
  const ListView = ()=>{
23
26
  const { isInDevelopmentMode, contentTypes, components, isLoading } = useDataManager.useDataManager();
24
27
  const { formatMessage } = reactIntl.useIntl();
25
- const { trackUsage } = strapiAdmin.useTracking();
28
+ const { trackUsage } = useCTBTracking.useCTBTracking();
26
29
  const { contentTypeUid, componentUid } = reactRouterDom.useParams();
27
30
  const { onOpenModalAddComponentsToDZ, onOpenModalAddField, onOpenModalEditSchema } = useFormModalNavigation.useFormModalNavigation();
28
31
  const type = contentTypeUid ? contentTypes[contentTypeUid] : componentUid ? components[componentUid] : null;
@@ -40,6 +43,12 @@ const ListView = ()=>{
40
43
  to: "/plugins/content-type-builder/content-types/create-content-type"
41
44
  });
42
45
  }
46
+ if (contentTypeUid && type.modelType === 'contentType' && type.visible === false) {
47
+ return /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Navigate, {
48
+ to: "/plugins/content-type-builder/content-types/create-content-type",
49
+ replace: true
50
+ });
51
+ }
43
52
  const isFromPlugin = 'plugin' in type && type?.plugin !== undefined;
44
53
  const forTarget = contentTypeUid ? 'contentType' : 'component';
45
54
  const label = type?.info?.displayName ?? '';
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.js","sources":["../../../../admin/src/pages/ListView/ListView.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\nimport { useTracking, Layouts, tours } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Typography } from '@strapi/design-system';\nimport { Information, Pencil, Plus } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../../components/DataManager/useDataManager';\nimport { useFormModalNavigation } from '../../components/FormModalNavigation/useFormModalNavigation';\nimport { List } from '../../components/List';\nimport { getTrad } from '../../utils/getTrad';\n\nimport { LinkToCMSettingsView } from './LinkToCMSettingsView';\n\nimport type { Internal } from '@strapi/types';\n\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst ListView = () => {\n const { isInDevelopmentMode, contentTypes, components, isLoading } = useDataManager();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const { contentTypeUid, componentUid } = useParams<{\n contentTypeUid: Internal.UID.ContentType;\n componentUid: Internal.UID.Component;\n }>();\n\n const { onOpenModalAddComponentsToDZ, onOpenModalAddField, onOpenModalEditSchema } =\n useFormModalNavigation();\n\n const type = contentTypeUid\n ? contentTypes[contentTypeUid]\n : componentUid\n ? components[componentUid]\n : null;\n\n if (isLoading) {\n return null;\n }\n\n if (!type) {\n const allowedEndpoints = Object.values(contentTypes)\n .filter((ct) => ct.visible === true && !ct.plugin)\n .map((ct) => ct.uid)\n .sort();\n\n if (allowedEndpoints.length > 0) {\n return <Navigate to={`/plugins/content-type-builder/content-types/${allowedEndpoints[0]}`} />;\n }\n\n return <Navigate to=\"/plugins/content-type-builder/content-types/create-content-type\" />;\n }\n\n const isFromPlugin = 'plugin' in type && type?.plugin !== undefined;\n\n const forTarget = contentTypeUid ? 'contentType' : 'component';\n\n const label = type?.info?.displayName ?? '';\n\n const canEdit = isInDevelopmentMode && !isFromPlugin;\n\n const handleClickAddComponentToDZ = (dynamicZoneTarget?: string) => {\n onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid: type.uid });\n };\n\n const onEdit = () => {\n if ('kind' in type) {\n if (type?.kind === 'collectionType') {\n trackUsage('willEditNameOfContentType');\n }\n\n if (type?.kind === 'singleType') {\n trackUsage('willEditNameOfSingleType');\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n kind: type?.kind,\n });\n\n return;\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n });\n };\n\n const addNewFieldLabel = formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n });\n\n const addAnotherFieldLabel = formatMessage({\n id: getTrad('button.attributes.add.another'),\n defaultMessage: 'Add another field',\n });\n\n const isDeleted = type.status === 'REMOVED';\n\n const primaryAction = isInDevelopmentMode && (\n <Flex gap={2}>\n <LinkToCMSettingsView\n key=\"link-to-cm-settings-view\"\n type={type}\n disabled={type.status === 'NEW' || isDeleted}\n />\n <Button\n startIcon={<Pencil />}\n variant=\"tertiary\"\n onClick={onEdit}\n disabled={!canEdit || isDeleted}\n >\n {formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })}\n </Button>\n\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n minWidth=\"max-content\"\n onClick={() => {\n onOpenModalAddField({ forTarget, targetUid: type.uid });\n }}\n disabled={isDeleted}\n >\n {type.attributes.length === 0 ? addNewFieldLabel : addAnotherFieldLabel}\n </Button>\n </Flex>\n );\n\n return (\n <>\n <tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentTypeBuilder.Introduction>\n {isDeleted && (\n <Flex background=\"danger100\" justifyContent={'center'} padding={4}>\n <Flex gap={2}>\n <Information fill=\"danger600\" height=\"2rem\" width=\"2rem\" />\n <Typography>\n {formatMessage(\n {\n id: getTrad('table.warning.deleted'),\n defaultMessage: `This {kind} has been deleted`,\n },\n {\n kind: type.modelType === 'contentType' ? 'Content Type' : 'Component',\n }\n )}\n </Typography>\n </Flex>\n </Flex>\n )}\n <LayoutsHeaderCustom id=\"title\" primaryAction={primaryAction} title={upperFirst(label)} />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n shadow=\"filterShadow\"\n hasRadius\n overflow=\"auto\"\n borderColor=\"neutral150\"\n >\n <List type={type} addComponentToDZ={handleClickAddComponentToDZ} isMain />\n </Box>\n </Layouts.Content>\n </>\n );\n};\n\nexport default ListView;\n"],"names":["LayoutsHeaderCustom","styled","Layouts","Header","ListView","isInDevelopmentMode","contentTypes","components","isLoading","useDataManager","formatMessage","useIntl","trackUsage","useTracking","contentTypeUid","componentUid","useParams","onOpenModalAddComponentsToDZ","onOpenModalAddField","onOpenModalEditSchema","useFormModalNavigation","type","allowedEndpoints","Object","values","filter","ct","visible","plugin","map","uid","sort","length","_jsx","Navigate","to","isFromPlugin","undefined","forTarget","label","info","displayName","canEdit","handleClickAddComponentToDZ","dynamicZoneTarget","targetUid","onEdit","kind","modalType","addNewFieldLabel","id","getTrad","defaultMessage","addAnotherFieldLabel","isDeleted","status","primaryAction","_jsxs","Flex","gap","LinkToCMSettingsView","disabled","Button","startIcon","Pencil","variant","onClick","Plus","minWidth","attributes","_Fragment","tours","contentTypeBuilder","Introduction","Box","background","justifyContent","padding","Information","fill","height","width","Typography","modelType","title","upperFirst","Content","shadow","hasRadius","overflow","borderColor","List","addComponentToDZ","isMain"],"mappings":"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"}
1
+ {"version":3,"file":"ListView.js","sources":["../../../../admin/src/pages/ListView/ListView.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\nimport { Layouts, tours } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Typography } from '@strapi/design-system';\nimport { Information, Pencil, Plus } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useCTBTracking } from '../../components/CTBSession/ctbSession';\nimport { useDataManager } from '../../components/DataManager/useDataManager';\nimport { useFormModalNavigation } from '../../components/FormModalNavigation/useFormModalNavigation';\nimport { List } from '../../components/List';\nimport { getTrad } from '../../utils/getTrad';\n\nimport { LinkToCMSettingsView } from './LinkToCMSettingsView';\n\nimport type { Internal } from '@strapi/types';\n\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst ListView = () => {\n const { isInDevelopmentMode, contentTypes, components, isLoading } = useDataManager();\n const { formatMessage } = useIntl();\n const { trackUsage } = useCTBTracking();\n\n const { contentTypeUid, componentUid } = useParams<{\n contentTypeUid: Internal.UID.ContentType;\n componentUid: Internal.UID.Component;\n }>();\n\n const { onOpenModalAddComponentsToDZ, onOpenModalAddField, onOpenModalEditSchema } =\n useFormModalNavigation();\n\n const type = contentTypeUid\n ? contentTypes[contentTypeUid]\n : componentUid\n ? components[componentUid]\n : null;\n\n if (isLoading) {\n return null;\n }\n\n if (!type) {\n const allowedEndpoints = Object.values(contentTypes)\n .filter((ct) => ct.visible === true && !ct.plugin)\n .map((ct) => ct.uid)\n .sort();\n\n if (allowedEndpoints.length > 0) {\n return <Navigate to={`/plugins/content-type-builder/content-types/${allowedEndpoints[0]}`} />;\n }\n\n return <Navigate to=\"/plugins/content-type-builder/content-types/create-content-type\" />;\n }\n\n if (contentTypeUid && type.modelType === 'contentType' && type.visible === false) {\n return (\n <Navigate to=\"/plugins/content-type-builder/content-types/create-content-type\" replace />\n );\n }\n\n const isFromPlugin = 'plugin' in type && type?.plugin !== undefined;\n\n const forTarget = contentTypeUid ? 'contentType' : 'component';\n\n const label = type?.info?.displayName ?? '';\n\n const canEdit = isInDevelopmentMode && !isFromPlugin;\n\n const handleClickAddComponentToDZ = (dynamicZoneTarget?: string) => {\n onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid: type.uid });\n };\n\n const onEdit = () => {\n if ('kind' in type) {\n if (type?.kind === 'collectionType') {\n trackUsage('willEditNameOfContentType');\n }\n\n if (type?.kind === 'singleType') {\n trackUsage('willEditNameOfSingleType');\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n kind: type?.kind,\n });\n\n return;\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n });\n };\n\n const addNewFieldLabel = formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n });\n\n const addAnotherFieldLabel = formatMessage({\n id: getTrad('button.attributes.add.another'),\n defaultMessage: 'Add another field',\n });\n\n const isDeleted = type.status === 'REMOVED';\n\n const primaryAction = isInDevelopmentMode && (\n <Flex gap={2}>\n <LinkToCMSettingsView\n key=\"link-to-cm-settings-view\"\n type={type}\n disabled={type.status === 'NEW' || isDeleted}\n />\n <Button\n startIcon={<Pencil />}\n variant=\"tertiary\"\n onClick={onEdit}\n disabled={!canEdit || isDeleted}\n >\n {formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })}\n </Button>\n\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n minWidth=\"max-content\"\n onClick={() => {\n onOpenModalAddField({ forTarget, targetUid: type.uid });\n }}\n disabled={isDeleted}\n >\n {type.attributes.length === 0 ? addNewFieldLabel : addAnotherFieldLabel}\n </Button>\n </Flex>\n );\n\n return (\n <>\n <tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentTypeBuilder.Introduction>\n {isDeleted && (\n <Flex background=\"danger100\" justifyContent={'center'} padding={4}>\n <Flex gap={2}>\n <Information fill=\"danger600\" height=\"2rem\" width=\"2rem\" />\n <Typography>\n {formatMessage(\n {\n id: getTrad('table.warning.deleted'),\n defaultMessage: `This {kind} has been deleted`,\n },\n {\n kind: type.modelType === 'contentType' ? 'Content Type' : 'Component',\n }\n )}\n </Typography>\n </Flex>\n </Flex>\n )}\n <LayoutsHeaderCustom id=\"title\" primaryAction={primaryAction} title={upperFirst(label)} />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n shadow=\"filterShadow\"\n hasRadius\n overflow=\"auto\"\n borderColor=\"neutral150\"\n >\n <List type={type} addComponentToDZ={handleClickAddComponentToDZ} isMain />\n </Box>\n </Layouts.Content>\n </>\n );\n};\n\nexport default ListView;\n"],"names":["LayoutsHeaderCustom","styled","Layouts","Header","ListView","isInDevelopmentMode","contentTypes","components","isLoading","useDataManager","formatMessage","useIntl","trackUsage","useCTBTracking","contentTypeUid","componentUid","useParams","onOpenModalAddComponentsToDZ","onOpenModalAddField","onOpenModalEditSchema","useFormModalNavigation","type","allowedEndpoints","Object","values","filter","ct","visible","plugin","map","uid","sort","length","_jsx","Navigate","to","modelType","replace","isFromPlugin","undefined","forTarget","label","info","displayName","canEdit","handleClickAddComponentToDZ","dynamicZoneTarget","targetUid","onEdit","kind","modalType","addNewFieldLabel","id","getTrad","defaultMessage","addAnotherFieldLabel","isDeleted","status","primaryAction","_jsxs","Flex","gap","LinkToCMSettingsView","disabled","Button","startIcon","Pencil","variant","onClick","Plus","minWidth","attributes","_Fragment","tours","contentTypeBuilder","Introduction","Box","background","justifyContent","padding","Information","fill","height","width","Typography","title","upperFirst","Content","shadow","hasRadius","overflow","borderColor","List","addComponentToDZ","isMain"],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { Layouts, useTracking, tours } from '@strapi/admin/strapi-admin';
2
+ import { Layouts, tours } from '@strapi/admin/strapi-admin';
3
3
  import { Flex, Button, Box, Typography } from '@strapi/design-system';
4
4
  import { Pencil, Plus, Information } from '@strapi/icons';
5
5
  import upperFirst from 'lodash/upperFirst';
6
6
  import { useIntl } from 'react-intl';
7
7
  import { useParams, Navigate } from 'react-router-dom';
8
8
  import { styled } from 'styled-components';
9
+ import 'react';
10
+ import '../../components/CTBSession/sessionContext.mjs';
11
+ import { useCTBTracking } from '../../components/CTBSession/useCTBTracking.mjs';
9
12
  import { useDataManager } from '../../components/DataManager/useDataManager.mjs';
10
13
  import { useFormModalNavigation } from '../../components/FormModalNavigation/useFormModalNavigation.mjs';
11
14
  import { List } from '../../components/List.mjs';
@@ -20,7 +23,7 @@ const LayoutsHeaderCustom = styled(Layouts.Header)`
20
23
  const ListView = ()=>{
21
24
  const { isInDevelopmentMode, contentTypes, components, isLoading } = useDataManager();
22
25
  const { formatMessage } = useIntl();
23
- const { trackUsage } = useTracking();
26
+ const { trackUsage } = useCTBTracking();
24
27
  const { contentTypeUid, componentUid } = useParams();
25
28
  const { onOpenModalAddComponentsToDZ, onOpenModalAddField, onOpenModalEditSchema } = useFormModalNavigation();
26
29
  const type = contentTypeUid ? contentTypes[contentTypeUid] : componentUid ? components[componentUid] : null;
@@ -38,6 +41,12 @@ const ListView = ()=>{
38
41
  to: "/plugins/content-type-builder/content-types/create-content-type"
39
42
  });
40
43
  }
44
+ if (contentTypeUid && type.modelType === 'contentType' && type.visible === false) {
45
+ return /*#__PURE__*/ jsx(Navigate, {
46
+ to: "/plugins/content-type-builder/content-types/create-content-type",
47
+ replace: true
48
+ });
49
+ }
41
50
  const isFromPlugin = 'plugin' in type && type?.plugin !== undefined;
42
51
  const forTarget = contentTypeUid ? 'contentType' : 'component';
43
52
  const label = type?.info?.displayName ?? '';
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.mjs","sources":["../../../../admin/src/pages/ListView/ListView.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\nimport { useTracking, Layouts, tours } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Typography } from '@strapi/design-system';\nimport { Information, Pencil, Plus } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../../components/DataManager/useDataManager';\nimport { useFormModalNavigation } from '../../components/FormModalNavigation/useFormModalNavigation';\nimport { List } from '../../components/List';\nimport { getTrad } from '../../utils/getTrad';\n\nimport { LinkToCMSettingsView } from './LinkToCMSettingsView';\n\nimport type { Internal } from '@strapi/types';\n\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst ListView = () => {\n const { isInDevelopmentMode, contentTypes, components, isLoading } = useDataManager();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const { contentTypeUid, componentUid } = useParams<{\n contentTypeUid: Internal.UID.ContentType;\n componentUid: Internal.UID.Component;\n }>();\n\n const { onOpenModalAddComponentsToDZ, onOpenModalAddField, onOpenModalEditSchema } =\n useFormModalNavigation();\n\n const type = contentTypeUid\n ? contentTypes[contentTypeUid]\n : componentUid\n ? components[componentUid]\n : null;\n\n if (isLoading) {\n return null;\n }\n\n if (!type) {\n const allowedEndpoints = Object.values(contentTypes)\n .filter((ct) => ct.visible === true && !ct.plugin)\n .map((ct) => ct.uid)\n .sort();\n\n if (allowedEndpoints.length > 0) {\n return <Navigate to={`/plugins/content-type-builder/content-types/${allowedEndpoints[0]}`} />;\n }\n\n return <Navigate to=\"/plugins/content-type-builder/content-types/create-content-type\" />;\n }\n\n const isFromPlugin = 'plugin' in type && type?.plugin !== undefined;\n\n const forTarget = contentTypeUid ? 'contentType' : 'component';\n\n const label = type?.info?.displayName ?? '';\n\n const canEdit = isInDevelopmentMode && !isFromPlugin;\n\n const handleClickAddComponentToDZ = (dynamicZoneTarget?: string) => {\n onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid: type.uid });\n };\n\n const onEdit = () => {\n if ('kind' in type) {\n if (type?.kind === 'collectionType') {\n trackUsage('willEditNameOfContentType');\n }\n\n if (type?.kind === 'singleType') {\n trackUsage('willEditNameOfSingleType');\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n kind: type?.kind,\n });\n\n return;\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n });\n };\n\n const addNewFieldLabel = formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n });\n\n const addAnotherFieldLabel = formatMessage({\n id: getTrad('button.attributes.add.another'),\n defaultMessage: 'Add another field',\n });\n\n const isDeleted = type.status === 'REMOVED';\n\n const primaryAction = isInDevelopmentMode && (\n <Flex gap={2}>\n <LinkToCMSettingsView\n key=\"link-to-cm-settings-view\"\n type={type}\n disabled={type.status === 'NEW' || isDeleted}\n />\n <Button\n startIcon={<Pencil />}\n variant=\"tertiary\"\n onClick={onEdit}\n disabled={!canEdit || isDeleted}\n >\n {formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })}\n </Button>\n\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n minWidth=\"max-content\"\n onClick={() => {\n onOpenModalAddField({ forTarget, targetUid: type.uid });\n }}\n disabled={isDeleted}\n >\n {type.attributes.length === 0 ? addNewFieldLabel : addAnotherFieldLabel}\n </Button>\n </Flex>\n );\n\n return (\n <>\n <tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentTypeBuilder.Introduction>\n {isDeleted && (\n <Flex background=\"danger100\" justifyContent={'center'} padding={4}>\n <Flex gap={2}>\n <Information fill=\"danger600\" height=\"2rem\" width=\"2rem\" />\n <Typography>\n {formatMessage(\n {\n id: getTrad('table.warning.deleted'),\n defaultMessage: `This {kind} has been deleted`,\n },\n {\n kind: type.modelType === 'contentType' ? 'Content Type' : 'Component',\n }\n )}\n </Typography>\n </Flex>\n </Flex>\n )}\n <LayoutsHeaderCustom id=\"title\" primaryAction={primaryAction} title={upperFirst(label)} />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n shadow=\"filterShadow\"\n hasRadius\n overflow=\"auto\"\n borderColor=\"neutral150\"\n >\n <List type={type} addComponentToDZ={handleClickAddComponentToDZ} isMain />\n </Box>\n </Layouts.Content>\n </>\n );\n};\n\nexport default ListView;\n"],"names":["LayoutsHeaderCustom","styled","Layouts","Header","ListView","isInDevelopmentMode","contentTypes","components","isLoading","useDataManager","formatMessage","useIntl","trackUsage","useTracking","contentTypeUid","componentUid","useParams","onOpenModalAddComponentsToDZ","onOpenModalAddField","onOpenModalEditSchema","useFormModalNavigation","type","allowedEndpoints","Object","values","filter","ct","visible","plugin","map","uid","sort","length","_jsx","Navigate","to","isFromPlugin","undefined","forTarget","label","info","displayName","canEdit","handleClickAddComponentToDZ","dynamicZoneTarget","targetUid","onEdit","kind","modalType","addNewFieldLabel","id","getTrad","defaultMessage","addAnotherFieldLabel","isDeleted","status","primaryAction","_jsxs","Flex","gap","LinkToCMSettingsView","disabled","Button","startIcon","Pencil","variant","onClick","Plus","minWidth","attributes","_Fragment","tours","contentTypeBuilder","Introduction","Box","background","justifyContent","padding","Information","fill","height","width","Typography","modelType","title","upperFirst","Content","shadow","hasRadius","overflow","borderColor","List","addComponentToDZ","isMain"],"mappings":"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"}
1
+ {"version":3,"file":"ListView.mjs","sources":["../../../../admin/src/pages/ListView/ListView.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\nimport { Layouts, tours } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Typography } from '@strapi/design-system';\nimport { Information, Pencil, Plus } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useCTBTracking } from '../../components/CTBSession/ctbSession';\nimport { useDataManager } from '../../components/DataManager/useDataManager';\nimport { useFormModalNavigation } from '../../components/FormModalNavigation/useFormModalNavigation';\nimport { List } from '../../components/List';\nimport { getTrad } from '../../utils/getTrad';\n\nimport { LinkToCMSettingsView } from './LinkToCMSettingsView';\n\nimport type { Internal } from '@strapi/types';\n\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst ListView = () => {\n const { isInDevelopmentMode, contentTypes, components, isLoading } = useDataManager();\n const { formatMessage } = useIntl();\n const { trackUsage } = useCTBTracking();\n\n const { contentTypeUid, componentUid } = useParams<{\n contentTypeUid: Internal.UID.ContentType;\n componentUid: Internal.UID.Component;\n }>();\n\n const { onOpenModalAddComponentsToDZ, onOpenModalAddField, onOpenModalEditSchema } =\n useFormModalNavigation();\n\n const type = contentTypeUid\n ? contentTypes[contentTypeUid]\n : componentUid\n ? components[componentUid]\n : null;\n\n if (isLoading) {\n return null;\n }\n\n if (!type) {\n const allowedEndpoints = Object.values(contentTypes)\n .filter((ct) => ct.visible === true && !ct.plugin)\n .map((ct) => ct.uid)\n .sort();\n\n if (allowedEndpoints.length > 0) {\n return <Navigate to={`/plugins/content-type-builder/content-types/${allowedEndpoints[0]}`} />;\n }\n\n return <Navigate to=\"/plugins/content-type-builder/content-types/create-content-type\" />;\n }\n\n if (contentTypeUid && type.modelType === 'contentType' && type.visible === false) {\n return (\n <Navigate to=\"/plugins/content-type-builder/content-types/create-content-type\" replace />\n );\n }\n\n const isFromPlugin = 'plugin' in type && type?.plugin !== undefined;\n\n const forTarget = contentTypeUid ? 'contentType' : 'component';\n\n const label = type?.info?.displayName ?? '';\n\n const canEdit = isInDevelopmentMode && !isFromPlugin;\n\n const handleClickAddComponentToDZ = (dynamicZoneTarget?: string) => {\n onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid: type.uid });\n };\n\n const onEdit = () => {\n if ('kind' in type) {\n if (type?.kind === 'collectionType') {\n trackUsage('willEditNameOfContentType');\n }\n\n if (type?.kind === 'singleType') {\n trackUsage('willEditNameOfSingleType');\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n kind: type?.kind,\n });\n\n return;\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n });\n };\n\n const addNewFieldLabel = formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n });\n\n const addAnotherFieldLabel = formatMessage({\n id: getTrad('button.attributes.add.another'),\n defaultMessage: 'Add another field',\n });\n\n const isDeleted = type.status === 'REMOVED';\n\n const primaryAction = isInDevelopmentMode && (\n <Flex gap={2}>\n <LinkToCMSettingsView\n key=\"link-to-cm-settings-view\"\n type={type}\n disabled={type.status === 'NEW' || isDeleted}\n />\n <Button\n startIcon={<Pencil />}\n variant=\"tertiary\"\n onClick={onEdit}\n disabled={!canEdit || isDeleted}\n >\n {formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })}\n </Button>\n\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n minWidth=\"max-content\"\n onClick={() => {\n onOpenModalAddField({ forTarget, targetUid: type.uid });\n }}\n disabled={isDeleted}\n >\n {type.attributes.length === 0 ? addNewFieldLabel : addAnotherFieldLabel}\n </Button>\n </Flex>\n );\n\n return (\n <>\n <tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentTypeBuilder.Introduction>\n {isDeleted && (\n <Flex background=\"danger100\" justifyContent={'center'} padding={4}>\n <Flex gap={2}>\n <Information fill=\"danger600\" height=\"2rem\" width=\"2rem\" />\n <Typography>\n {formatMessage(\n {\n id: getTrad('table.warning.deleted'),\n defaultMessage: `This {kind} has been deleted`,\n },\n {\n kind: type.modelType === 'contentType' ? 'Content Type' : 'Component',\n }\n )}\n </Typography>\n </Flex>\n </Flex>\n )}\n <LayoutsHeaderCustom id=\"title\" primaryAction={primaryAction} title={upperFirst(label)} />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n shadow=\"filterShadow\"\n hasRadius\n overflow=\"auto\"\n borderColor=\"neutral150\"\n >\n <List type={type} addComponentToDZ={handleClickAddComponentToDZ} isMain />\n </Box>\n </Layouts.Content>\n </>\n );\n};\n\nexport default ListView;\n"],"names":["LayoutsHeaderCustom","styled","Layouts","Header","ListView","isInDevelopmentMode","contentTypes","components","isLoading","useDataManager","formatMessage","useIntl","trackUsage","useCTBTracking","contentTypeUid","componentUid","useParams","onOpenModalAddComponentsToDZ","onOpenModalAddField","onOpenModalEditSchema","useFormModalNavigation","type","allowedEndpoints","Object","values","filter","ct","visible","plugin","map","uid","sort","length","_jsx","Navigate","to","modelType","replace","isFromPlugin","undefined","forTarget","label","info","displayName","canEdit","handleClickAddComponentToDZ","dynamicZoneTarget","targetUid","onEdit","kind","modalType","addNewFieldLabel","id","getTrad","defaultMessage","addAnotherFieldLabel","isDeleted","status","primaryAction","_jsxs","Flex","gap","LinkToCMSettingsView","disabled","Button","startIcon","Pencil","variant","onClick","Plus","minWidth","attributes","_Fragment","tours","contentTypeBuilder","Introduction","Box","background","justifyContent","padding","Information","fill","height","width","Typography","title","upperFirst","Content","shadow","hasRadius","overflow","borderColor","List","addComponentToDZ","isMain"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type ReactNode } from 'react';
2
+ interface CTBSessionProviderProps {
3
+ children: ReactNode;
4
+ }
5
+ /**
6
+ * Generates a unique session identifier for CTB tracking
7
+ * Uses crypto.randomUUID() for guaranteed uniqueness and readability
8
+ *
9
+ * @returns Session ID in format: ctb-{uuid}
10
+ */
11
+ export declare const generateSessionId: () => string | undefined;
12
+ /**
13
+ * Provider for CTB session tracking context.
14
+ *
15
+ * This provider should wrap components that need to track CTB events with session IDs.
16
+ * It manages the session ID lifecycle and provides methods to regenerate it when needed.
17
+ *
18
+ * Usage:
19
+ * ```tsx
20
+ * <CTBSessionProvider>
21
+ * {children}
22
+ * </CTBSessionProvider>
23
+ * ```
24
+ */
25
+ export declare const CTBSessionProvider: ({ children }: CTBSessionProviderProps) => import("react/jsx-runtime").JSX.Element;
26
+ export {};
@@ -0,0 +1,5 @@
1
+ export { CTBSessionProvider, generateSessionId } from './CTBSessionProvider';
2
+ export { CTBSessionContext } from './sessionContext';
3
+ export { useCTBSession } from './useCTBSession';
4
+ export { useCTBTracking } from './useCTBTracking';
5
+ export type { CTBSessionContextValue } from './sessionContext';
@@ -0,0 +1,25 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * Context for managing CTB (Content Type Builder) session tracking.
4
+ *
5
+ * Session Lifecycle:
6
+ * - Created: When CTBSessionProvider mounts
7
+ * - Regenerated: After server restart, when navigating back to CTB from another page
8
+ * - Used: Automatically attached to all CTB tracking events
9
+ *
10
+ * The session ID groups related tracking events together to understand user workflows
11
+ * within a single CTB session.
12
+ */
13
+ export interface CTBSessionContextValue {
14
+ /**
15
+ * Unique identifier for the current CTB session
16
+ * Format: ctb-{uuid}
17
+ */
18
+ sessionId: string | undefined;
19
+ /**
20
+ * Generates and sets a new session ID
21
+ * Called when starting a new CTB session (e.g., after navigation or server restart)
22
+ */
23
+ regenerateSessionId: () => void;
24
+ }
25
+ export declare const CTBSessionContext: import("react").Context<CTBSessionContextValue | null>;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Hook to access the current CTB session context.
3
+ *
4
+ * @throws Error if used outside of CTBSessionProvider
5
+ * @returns The CTB session context containing sessionId and regenerateSessionId
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * const { sessionId, regenerateSessionId } = useCTBSession();
10
+ * ```
11
+ */
12
+ export declare const useCTBSession: () => import("./sessionContext").CTBSessionContextValue;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Hook that provides tracking functionality with automatic CTB session ID inclusion.
3
+ * This version accepts arbitrary event names (string) to allow feature-specific
4
+ * events that are not yet declared in the central tracking typings.
5
+ *
6
+ * Note: this intentionally relaxes TypeScript restrictions so callers can
7
+ * emit new tracking event names without needing to update the upstream
8
+ * tracking type definitions. The session ID is merged into the properties
9
+ * object before forwarding to the original tracking implementation.
10
+ */
11
+ export declare const useCTBTracking: () => {
12
+ trackUsage: (event: string, properties?: Record<string, unknown>) => any;
13
+ };