@strapi/admin 5.24.2 → 5.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/App.js +6 -2
- package/dist/admin/admin/src/App.js.map +1 -1
- package/dist/admin/admin/src/App.mjs +7 -3
- package/dist/admin/admin/src/App.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.js +11 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs +11 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js +160 -23
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs +162 -25
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +28 -9
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs +30 -11
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js +2 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs +2 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +2 -1
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +2 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +2 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +2 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useAIAvailability.js +13 -0
- package/dist/admin/admin/src/hooks/useAIAvailability.js.map +1 -0
- package/dist/admin/admin/src/hooks/useAIAvailability.mjs +11 -0
- package/dist/admin/admin/src/hooks/useAIAvailability.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Home/HomePage.js +1 -0
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +1 -0
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +12 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +12 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +6 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +6 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/services/homepage.js +15 -1
- package/dist/admin/admin/src/services/homepage.js.map +1 -1
- package/dist/admin/admin/src/services/homepage.mjs +14 -2
- package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +2 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +2 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/GlobalNotifications.js +11 -0
- package/dist/admin/ee/admin/src/components/GlobalNotifications.js.map +1 -0
- package/dist/admin/ee/admin/src/components/GlobalNotifications.mjs +9 -0
- package/dist/admin/ee/admin/src/components/GlobalNotifications.mjs.map +1 -0
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js +11 -0
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -0
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs +9 -0
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -0
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js +82 -0
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js.map +1 -0
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs +80 -0
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +102 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +100 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -0
- package/dist/admin/ee/admin/src/services/ai.js +30 -0
- package/dist/admin/ee/admin/src/services/ai.js.map +1 -0
- package/dist/admin/ee/admin/src/services/ai.mjs +26 -0
- package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -0
- package/dist/admin/ee.js +4 -0
- package/dist/admin/ee.js.map +1 -1
- package/dist/admin/ee.mjs +2 -0
- package/dist/admin/ee.mjs.map +1 -1
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/GuidedTour/Context.d.ts +7 -0
- package/dist/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.d.ts +7 -16
- package/dist/admin/src/components/GuidedTour/Tours.d.ts +1 -22
- package/dist/admin/src/ee.d.ts +2 -0
- package/dist/admin/src/features/Tracking.d.ts +21 -2
- package/dist/admin/src/hooks/useAIAvailability.d.ts +5 -0
- package/dist/admin/src/index.d.ts +2 -0
- package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +2 -2
- package/dist/admin/src/services/admin.d.ts +1 -0
- package/dist/admin/src/services/homepage.d.ts +3 -2
- package/dist/ee/admin/src/components/GlobalNotifications.d.ts +1 -0
- package/dist/ee/admin/src/hooks/useAIAvailability.d.ts +1 -0
- package/dist/ee/admin/src/hooks/useAIUsageWarning.d.ts +5 -0
- package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +1 -1
- package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.d.ts +1 -0
- package/dist/ee/admin/src/services/ai.d.ts +9 -0
- package/dist/ee/server/src/ai/controllers/ai.d.ts +7 -0
- package/dist/ee/server/src/ai/controllers/ai.d.ts.map +1 -0
- package/dist/ee/server/src/ai/routes/ai.d.ts +13 -0
- package/dist/ee/server/src/ai/routes/ai.d.ts.map +1 -0
- package/dist/ee/server/src/controllers/admin.d.ts +3 -0
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/index.d.ts +3 -0
- package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +15 -187
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/ai/controllers/ai.js +218 -0
- package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -0
- package/dist/server/ee/server/src/ai/controllers/ai.mjs +216 -0
- package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -0
- package/dist/server/ee/server/src/ai/routes/ai.js +32 -0
- package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -0
- package/dist/server/ee/server/src/ai/routes/ai.mjs +30 -0
- package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -0
- package/dist/server/ee/server/src/controllers/admin.js +4 -1
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +4 -1
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +37 -23
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +37 -23
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +5 -1
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +5 -1
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/homepage.js +17 -0
- package/dist/server/server/src/controllers/homepage.js.map +1 -1
- package/dist/server/server/src/controllers/homepage.mjs +17 -0
- package/dist/server/server/src/controllers/homepage.mjs.map +1 -1
- package/dist/server/server/src/controllers/validation/schema.js +30 -0
- package/dist/server/server/src/controllers/validation/schema.js.map +1 -0
- package/dist/server/server/src/controllers/validation/schema.mjs +26 -0
- package/dist/server/server/src/controllers/validation/schema.mjs.map +1 -0
- package/dist/server/server/src/routes/homepage.js +20 -0
- package/dist/server/server/src/routes/homepage.js.map +1 -1
- package/dist/server/server/src/routes/homepage.mjs +20 -0
- package/dist/server/server/src/routes/homepage.mjs.map +1 -1
- package/dist/server/server/src/services/homepage.js +48 -1
- package/dist/server/server/src/services/homepage.js.map +1 -1
- package/dist/server/server/src/services/homepage.mjs +48 -1
- package/dist/server/server/src/services/homepage.mjs.map +1 -1
- package/dist/server/src/controllers/admin.d.ts +2 -0
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/homepage.d.ts +8 -0
- package/dist/server/src/controllers/homepage.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +22 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/schema.d.ts +61 -0
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +38 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/homepage.d.ts.map +1 -1
- package/dist/server/src/services/homepage.d.ts +3 -0
- package/dist/server/src/services/homepage.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +16 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/shared/contracts/admin.d.ts +1 -0
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/dist/shared/contracts/ai.d.ts +40 -0
- package/dist/shared/contracts/ai.d.ts.map +1 -0
- package/dist/shared/contracts/homepage.d.ts +27 -0
- package/dist/shared/contracts/homepage.d.ts.map +1 -1
- package/dist/shared/contracts/users.d.ts +16 -0
- package/dist/shared/contracts/users.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
2
|
+
import { useLocation } from 'react-router-dom';
|
|
3
|
+
import { useNotification } from '../../../../admin/src/features/Notifications.mjs';
|
|
4
|
+
import { useGetAIUsageQuery } from '../services/ai.mjs';
|
|
5
|
+
import { useAIAvailability } from './useAIAvailability.mjs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Triggers a warning notification if AI usage is above a threshold (default 80%).
|
|
9
|
+
* @param threshold - Usage percentage (0-1) at which to warn. Default: 0.8 (80%)
|
|
10
|
+
*/ function useAIUsageWarning(threshold = 0.8) {
|
|
11
|
+
const location = useLocation();
|
|
12
|
+
const isAuthPage = location.pathname.startsWith('/auth');
|
|
13
|
+
const { toggleNotification } = useNotification();
|
|
14
|
+
const isAIEnabled = useAIAvailability();
|
|
15
|
+
const { data, isLoading, error } = useGetAIUsageQuery(undefined, {
|
|
16
|
+
refetchOnMountOrArgChange: true,
|
|
17
|
+
skip: !isAIEnabled || isAuthPage
|
|
18
|
+
});
|
|
19
|
+
const warningLevelsRef = useRef(new Set());
|
|
20
|
+
useEffect(()=>{
|
|
21
|
+
if (isAuthPage || isLoading || error || !data?.subscription?.cmsAiEnabled || !isAIEnabled) return;
|
|
22
|
+
const totalCredits = data.subscription.cmsAiCreditsBase;
|
|
23
|
+
const usedCredits = data.cmsAiCreditsUsed;
|
|
24
|
+
const maxCredits = data.subscription.cmsAiCreditsMaxUsage;
|
|
25
|
+
if (!totalCredits || totalCredits <= 0) return;
|
|
26
|
+
const percentUsed = usedCredits / totalCredits;
|
|
27
|
+
const percentDisplay = Math.round(percentUsed * 100);
|
|
28
|
+
const remaining = Math.max(totalCredits - usedCredits, 0);
|
|
29
|
+
if (percentUsed >= 1 && !warningLevelsRef.current.has(100)) {
|
|
30
|
+
const hasOverageAllowance = maxCredits && maxCredits > totalCredits;
|
|
31
|
+
if (hasOverageAllowance) {
|
|
32
|
+
// Overages notification (error style)
|
|
33
|
+
toggleNotification({
|
|
34
|
+
type: 'danger',
|
|
35
|
+
message: `You've used 100% of your AI credits. Overages are being applied.`,
|
|
36
|
+
timeout: 5000
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
// No overages allowed - credits exhausted
|
|
40
|
+
toggleNotification({
|
|
41
|
+
type: 'danger',
|
|
42
|
+
message: `You've exhausted your AI credits. No additional credits available.`,
|
|
43
|
+
timeout: 5000
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
warningLevelsRef.current.add(100);
|
|
47
|
+
} else if (percentUsed >= 0.9 && percentUsed < 1 && !warningLevelsRef.current.has(90)) {
|
|
48
|
+
// 90% warning notification
|
|
49
|
+
toggleNotification({
|
|
50
|
+
type: 'warning',
|
|
51
|
+
message: `You've used ${percentDisplay}% of your AI credits. ${remaining} remain.`,
|
|
52
|
+
timeout: 5000
|
|
53
|
+
});
|
|
54
|
+
warningLevelsRef.current.add(90);
|
|
55
|
+
} else if (percentUsed >= threshold && percentUsed < 0.9 && !warningLevelsRef.current.has(Math.round(threshold * 100))) {
|
|
56
|
+
// Initial threshold warning (default 80%)
|
|
57
|
+
toggleNotification({
|
|
58
|
+
type: 'warning',
|
|
59
|
+
message: `You've used ${percentDisplay}% of your AI credits. ${remaining} remain.`,
|
|
60
|
+
timeout: 5000
|
|
61
|
+
});
|
|
62
|
+
warningLevelsRef.current.add(Math.round(threshold * 100));
|
|
63
|
+
}
|
|
64
|
+
// Reset warnings if usage drops significantly (e.g., below 70%)
|
|
65
|
+
if (percentUsed < 0.7) {
|
|
66
|
+
warningLevelsRef.current.clear();
|
|
67
|
+
}
|
|
68
|
+
}, [
|
|
69
|
+
data,
|
|
70
|
+
isLoading,
|
|
71
|
+
error,
|
|
72
|
+
threshold,
|
|
73
|
+
toggleNotification,
|
|
74
|
+
isAIEnabled,
|
|
75
|
+
isAuthPage
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export { useAIUsageWarning };
|
|
80
|
+
//# sourceMappingURL=useAIUsageWarning.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAIUsageWarning.mjs","sources":["../../../../../../ee/admin/src/hooks/useAIUsageWarning.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { useLocation } from 'react-router-dom';\n\nimport { useNotification } from '../../../../admin/src/features/Notifications';\nimport { useGetAIUsageQuery } from '../services/ai';\n\nimport { useAIAvailability } from './useAIAvailability';\n\n/**\n * Triggers a warning notification if AI usage is above a threshold (default 80%).\n * @param threshold - Usage percentage (0-1) at which to warn. Default: 0.8 (80%)\n */\nexport function useAIUsageWarning(threshold: number = 0.8) {\n const location = useLocation();\n const isAuthPage = location.pathname.startsWith('/auth');\n const { toggleNotification } = useNotification();\n const isAIEnabled = useAIAvailability();\n const { data, isLoading, error } = useGetAIUsageQuery(undefined, {\n refetchOnMountOrArgChange: true,\n skip: !isAIEnabled || isAuthPage,\n });\n const warningLevelsRef = useRef(new Set<number>());\n\n useEffect(() => {\n if (isAuthPage || isLoading || error || !data?.subscription?.cmsAiEnabled || !isAIEnabled)\n return;\n\n const totalCredits = data.subscription.cmsAiCreditsBase;\n const usedCredits = data.cmsAiCreditsUsed;\n const maxCredits = data.subscription.cmsAiCreditsMaxUsage;\n\n if (!totalCredits || totalCredits <= 0) return;\n\n const percentUsed = usedCredits / totalCredits;\n\n const percentDisplay = Math.round(percentUsed * 100);\n const remaining = Math.max(totalCredits - usedCredits, 0);\n\n if (percentUsed >= 1 && !warningLevelsRef.current.has(100)) {\n const hasOverageAllowance = maxCredits && maxCredits > totalCredits;\n\n if (hasOverageAllowance) {\n // Overages notification (error style)\n toggleNotification({\n type: 'danger',\n message: `You've used 100% of your AI credits. Overages are being applied.`,\n timeout: 5000,\n });\n } else {\n // No overages allowed - credits exhausted\n toggleNotification({\n type: 'danger',\n message: `You've exhausted your AI credits. No additional credits available.`,\n timeout: 5000,\n });\n }\n warningLevelsRef.current.add(100);\n } else if (percentUsed >= 0.9 && percentUsed < 1 && !warningLevelsRef.current.has(90)) {\n // 90% warning notification\n toggleNotification({\n type: 'warning',\n message: `You've used ${percentDisplay}% of your AI credits. ${remaining} remain.`,\n timeout: 5000,\n });\n warningLevelsRef.current.add(90);\n } else if (\n percentUsed >= threshold &&\n percentUsed < 0.9 &&\n !warningLevelsRef.current.has(Math.round(threshold * 100))\n ) {\n // Initial threshold warning (default 80%)\n toggleNotification({\n type: 'warning',\n message: `You've used ${percentDisplay}% of your AI credits. ${remaining} remain.`,\n timeout: 5000,\n });\n warningLevelsRef.current.add(Math.round(threshold * 100));\n }\n\n // Reset warnings if usage drops significantly (e.g., below 70%)\n if (percentUsed < 0.7) {\n warningLevelsRef.current.clear();\n }\n }, [data, isLoading, error, threshold, toggleNotification, isAIEnabled, isAuthPage]);\n}\n"],"names":["useAIUsageWarning","threshold","location","useLocation","isAuthPage","pathname","startsWith","toggleNotification","useNotification","isAIEnabled","useAIAvailability","data","isLoading","error","useGetAIUsageQuery","undefined","refetchOnMountOrArgChange","skip","warningLevelsRef","useRef","Set","useEffect","subscription","cmsAiEnabled","totalCredits","cmsAiCreditsBase","usedCredits","cmsAiCreditsUsed","maxCredits","cmsAiCreditsMaxUsage","percentUsed","percentDisplay","Math","round","remaining","max","current","has","hasOverageAllowance","type","message","timeout","add","clear"],"mappings":"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"}
|
package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var designSystem = require('@strapi/design-system');
|
|
5
|
+
var reactIntl = require('react-intl');
|
|
6
|
+
var styled = require('styled-components');
|
|
7
|
+
var ai = require('../../../../../services/ai.js');
|
|
8
|
+
|
|
9
|
+
const StyledProgressBar = styled.styled(designSystem.ProgressBar)`
|
|
10
|
+
width: 100%;
|
|
11
|
+
background-color: ${({ theme })=>theme.colors.neutral200};
|
|
12
|
+
> div {
|
|
13
|
+
background-color: ${({ theme })=>theme.colors.neutral700};
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
const StyledGridItem = styled.styled(designSystem.Grid.Item)`
|
|
17
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
18
|
+
grid-column: 7 / 13;
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
21
|
+
const AIUsage = ()=>{
|
|
22
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
23
|
+
const { data, isLoading, error } = ai.useGetAIUsageQuery(undefined, {
|
|
24
|
+
refetchOnMountOrArgChange: true
|
|
25
|
+
});
|
|
26
|
+
if (isLoading) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
if (error || !data) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
if (!data.subscription?.cmsAiEnabled) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
// Calculate remaining credits and total
|
|
36
|
+
const totalCredits = data.subscription.cmsAiCreditsBase;
|
|
37
|
+
const usedCredits = data.cmsAiCreditsUsed;
|
|
38
|
+
const maxCredits = data.subscription.cmsAiCreditsMaxUsage;
|
|
39
|
+
const overage = usedCredits - totalCredits;
|
|
40
|
+
const percentRemaining = usedCredits / totalCredits * 100;
|
|
41
|
+
const percentOverage = usedCredits / maxCredits * 100;
|
|
42
|
+
const isInOverages = overage > 0 && maxCredits !== totalCredits;
|
|
43
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(StyledGridItem, {
|
|
44
|
+
col: 6,
|
|
45
|
+
s: 12,
|
|
46
|
+
direction: "column",
|
|
47
|
+
alignItems: "start",
|
|
48
|
+
gap: 2,
|
|
49
|
+
children: [
|
|
50
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
51
|
+
variant: "sigma",
|
|
52
|
+
textColor: "neutral600",
|
|
53
|
+
children: formatMessage({
|
|
54
|
+
id: 'Settings.application.ai-usage',
|
|
55
|
+
defaultMessage: 'AI Usage'
|
|
56
|
+
})
|
|
57
|
+
}),
|
|
58
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
59
|
+
gap: 2,
|
|
60
|
+
direction: "column",
|
|
61
|
+
alignItems: "flex-start",
|
|
62
|
+
children: [
|
|
63
|
+
!isInOverages && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
64
|
+
children: [
|
|
65
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
66
|
+
width: "100%",
|
|
67
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(StyledProgressBar, {
|
|
68
|
+
value: percentRemaining,
|
|
69
|
+
size: "M"
|
|
70
|
+
})
|
|
71
|
+
}),
|
|
72
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
73
|
+
variant: "omega",
|
|
74
|
+
children: `${usedCredits.toFixed(2)} credits used from ${totalCredits} credits available in your plan`
|
|
75
|
+
})
|
|
76
|
+
]
|
|
77
|
+
}),
|
|
78
|
+
isInOverages && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
79
|
+
children: [
|
|
80
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
81
|
+
width: "100%",
|
|
82
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(StyledProgressBar, {
|
|
83
|
+
value: percentOverage,
|
|
84
|
+
size: "M",
|
|
85
|
+
color: "danger"
|
|
86
|
+
})
|
|
87
|
+
}),
|
|
88
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
89
|
+
variant: "omega",
|
|
90
|
+
textColor: "danger600",
|
|
91
|
+
children: `${overage.toFixed(2)} credits used above the ${totalCredits} credits available in your plan`
|
|
92
|
+
})
|
|
93
|
+
]
|
|
94
|
+
})
|
|
95
|
+
]
|
|
96
|
+
})
|
|
97
|
+
]
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
exports.AIUsage = AIUsage;
|
|
102
|
+
//# sourceMappingURL=AIUsage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIUsage.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.tsx"],"sourcesContent":["import { Flex, Typography, Grid, ProgressBar } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetAIUsageQuery } from '../../../../../services/ai';\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral200};\n > div {\n background-color: ${({ theme }) => theme.colors.neutral700};\n }\n`;\n\nconst StyledGridItem = styled(Grid.Item)`\n ${({ theme }) => theme.breakpoints.large} {\n grid-column: 7 / 13;\n }\n`;\n\nexport const AIUsage = () => {\n const { formatMessage } = useIntl();\n const { data, isLoading, error } = useGetAIUsageQuery(undefined, {\n refetchOnMountOrArgChange: true,\n });\n\n if (isLoading) {\n return null;\n }\n\n if (error || !data) {\n return null;\n }\n\n if (!data.subscription?.cmsAiEnabled) {\n return null;\n }\n\n // Calculate remaining credits and total\n const totalCredits = data.subscription.cmsAiCreditsBase;\n const usedCredits = data.cmsAiCreditsUsed;\n const maxCredits = data.subscription.cmsAiCreditsMaxUsage;\n const overage = usedCredits - totalCredits;\n const percentRemaining = (usedCredits / totalCredits) * 100;\n const percentOverage = (usedCredits / maxCredits) * 100;\n\n const isInOverages = overage > 0 && maxCredits !== totalCredits;\n\n return (\n <StyledGridItem col={6} s={12} direction=\"column\" alignItems=\"start\" gap={2}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.ai-usage',\n defaultMessage: 'AI Usage',\n })}\n </Typography>\n <Flex gap={2} direction=\"column\" alignItems=\"flex-start\">\n {!isInOverages && (\n <>\n <Flex width=\"100%\">\n <StyledProgressBar value={percentRemaining} size=\"M\" />\n </Flex>\n <Typography variant=\"omega\">\n {`${usedCredits.toFixed(2)} credits used from ${totalCredits} credits available in your plan`}\n </Typography>\n </>\n )}\n {isInOverages && (\n <>\n <Flex width=\"100%\">\n <StyledProgressBar value={percentOverage} size=\"M\" color=\"danger\" />\n </Flex>\n <Typography variant=\"omega\" textColor=\"danger600\">\n {`${overage.toFixed(2)} credits used above the ${totalCredits} credits available in your plan`}\n </Typography>\n </>\n )}\n </Flex>\n </StyledGridItem>\n );\n};\n"],"names":["StyledProgressBar","styled","ProgressBar","theme","colors","neutral200","neutral700","StyledGridItem","Grid","Item","breakpoints","large","AIUsage","formatMessage","useIntl","data","isLoading","error","useGetAIUsageQuery","undefined","refetchOnMountOrArgChange","subscription","cmsAiEnabled","totalCredits","cmsAiCreditsBase","usedCredits","cmsAiCreditsUsed","maxCredits","cmsAiCreditsMaxUsage","overage","percentRemaining","percentOverage","isInOverages","_jsxs","col","s","direction","alignItems","gap","_jsx","Typography","variant","textColor","id","defaultMessage","Flex","_Fragment","width","value","size","toFixed","color"],"mappings":"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"}
|
package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { ProgressBar, Grid, Typography, Flex } from '@strapi/design-system';
|
|
3
|
+
import { useIntl } from 'react-intl';
|
|
4
|
+
import { styled } from 'styled-components';
|
|
5
|
+
import { useGetAIUsageQuery } from '../../../../../services/ai.mjs';
|
|
6
|
+
|
|
7
|
+
const StyledProgressBar = styled(ProgressBar)`
|
|
8
|
+
width: 100%;
|
|
9
|
+
background-color: ${({ theme })=>theme.colors.neutral200};
|
|
10
|
+
> div {
|
|
11
|
+
background-color: ${({ theme })=>theme.colors.neutral700};
|
|
12
|
+
}
|
|
13
|
+
`;
|
|
14
|
+
const StyledGridItem = styled(Grid.Item)`
|
|
15
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
16
|
+
grid-column: 7 / 13;
|
|
17
|
+
}
|
|
18
|
+
`;
|
|
19
|
+
const AIUsage = ()=>{
|
|
20
|
+
const { formatMessage } = useIntl();
|
|
21
|
+
const { data, isLoading, error } = useGetAIUsageQuery(undefined, {
|
|
22
|
+
refetchOnMountOrArgChange: true
|
|
23
|
+
});
|
|
24
|
+
if (isLoading) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
if (error || !data) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
if (!data.subscription?.cmsAiEnabled) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
// Calculate remaining credits and total
|
|
34
|
+
const totalCredits = data.subscription.cmsAiCreditsBase;
|
|
35
|
+
const usedCredits = data.cmsAiCreditsUsed;
|
|
36
|
+
const maxCredits = data.subscription.cmsAiCreditsMaxUsage;
|
|
37
|
+
const overage = usedCredits - totalCredits;
|
|
38
|
+
const percentRemaining = usedCredits / totalCredits * 100;
|
|
39
|
+
const percentOverage = usedCredits / maxCredits * 100;
|
|
40
|
+
const isInOverages = overage > 0 && maxCredits !== totalCredits;
|
|
41
|
+
return /*#__PURE__*/ jsxs(StyledGridItem, {
|
|
42
|
+
col: 6,
|
|
43
|
+
s: 12,
|
|
44
|
+
direction: "column",
|
|
45
|
+
alignItems: "start",
|
|
46
|
+
gap: 2,
|
|
47
|
+
children: [
|
|
48
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
49
|
+
variant: "sigma",
|
|
50
|
+
textColor: "neutral600",
|
|
51
|
+
children: formatMessage({
|
|
52
|
+
id: 'Settings.application.ai-usage',
|
|
53
|
+
defaultMessage: 'AI Usage'
|
|
54
|
+
})
|
|
55
|
+
}),
|
|
56
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
57
|
+
gap: 2,
|
|
58
|
+
direction: "column",
|
|
59
|
+
alignItems: "flex-start",
|
|
60
|
+
children: [
|
|
61
|
+
!isInOverages && /*#__PURE__*/ jsxs(Fragment, {
|
|
62
|
+
children: [
|
|
63
|
+
/*#__PURE__*/ jsx(Flex, {
|
|
64
|
+
width: "100%",
|
|
65
|
+
children: /*#__PURE__*/ jsx(StyledProgressBar, {
|
|
66
|
+
value: percentRemaining,
|
|
67
|
+
size: "M"
|
|
68
|
+
})
|
|
69
|
+
}),
|
|
70
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
71
|
+
variant: "omega",
|
|
72
|
+
children: `${usedCredits.toFixed(2)} credits used from ${totalCredits} credits available in your plan`
|
|
73
|
+
})
|
|
74
|
+
]
|
|
75
|
+
}),
|
|
76
|
+
isInOverages && /*#__PURE__*/ jsxs(Fragment, {
|
|
77
|
+
children: [
|
|
78
|
+
/*#__PURE__*/ jsx(Flex, {
|
|
79
|
+
width: "100%",
|
|
80
|
+
children: /*#__PURE__*/ jsx(StyledProgressBar, {
|
|
81
|
+
value: percentOverage,
|
|
82
|
+
size: "M",
|
|
83
|
+
color: "danger"
|
|
84
|
+
})
|
|
85
|
+
}),
|
|
86
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
87
|
+
variant: "omega",
|
|
88
|
+
textColor: "danger600",
|
|
89
|
+
children: `${overage.toFixed(2)} credits used above the ${totalCredits} credits available in your plan`
|
|
90
|
+
})
|
|
91
|
+
]
|
|
92
|
+
})
|
|
93
|
+
]
|
|
94
|
+
})
|
|
95
|
+
]
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
export { AIUsage };
|
|
100
|
+
//# sourceMappingURL=AIUsage.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIUsage.mjs","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.tsx"],"sourcesContent":["import { Flex, Typography, Grid, ProgressBar } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetAIUsageQuery } from '../../../../../services/ai';\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral200};\n > div {\n background-color: ${({ theme }) => theme.colors.neutral700};\n }\n`;\n\nconst StyledGridItem = styled(Grid.Item)`\n ${({ theme }) => theme.breakpoints.large} {\n grid-column: 7 / 13;\n }\n`;\n\nexport const AIUsage = () => {\n const { formatMessage } = useIntl();\n const { data, isLoading, error } = useGetAIUsageQuery(undefined, {\n refetchOnMountOrArgChange: true,\n });\n\n if (isLoading) {\n return null;\n }\n\n if (error || !data) {\n return null;\n }\n\n if (!data.subscription?.cmsAiEnabled) {\n return null;\n }\n\n // Calculate remaining credits and total\n const totalCredits = data.subscription.cmsAiCreditsBase;\n const usedCredits = data.cmsAiCreditsUsed;\n const maxCredits = data.subscription.cmsAiCreditsMaxUsage;\n const overage = usedCredits - totalCredits;\n const percentRemaining = (usedCredits / totalCredits) * 100;\n const percentOverage = (usedCredits / maxCredits) * 100;\n\n const isInOverages = overage > 0 && maxCredits !== totalCredits;\n\n return (\n <StyledGridItem col={6} s={12} direction=\"column\" alignItems=\"start\" gap={2}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.application.ai-usage',\n defaultMessage: 'AI Usage',\n })}\n </Typography>\n <Flex gap={2} direction=\"column\" alignItems=\"flex-start\">\n {!isInOverages && (\n <>\n <Flex width=\"100%\">\n <StyledProgressBar value={percentRemaining} size=\"M\" />\n </Flex>\n <Typography variant=\"omega\">\n {`${usedCredits.toFixed(2)} credits used from ${totalCredits} credits available in your plan`}\n </Typography>\n </>\n )}\n {isInOverages && (\n <>\n <Flex width=\"100%\">\n <StyledProgressBar value={percentOverage} size=\"M\" color=\"danger\" />\n </Flex>\n <Typography variant=\"omega\" textColor=\"danger600\">\n {`${overage.toFixed(2)} credits used above the ${totalCredits} credits available in your plan`}\n </Typography>\n </>\n )}\n </Flex>\n </StyledGridItem>\n );\n};\n"],"names":["StyledProgressBar","styled","ProgressBar","theme","colors","neutral200","neutral700","StyledGridItem","Grid","Item","breakpoints","large","AIUsage","formatMessage","useIntl","data","isLoading","error","useGetAIUsageQuery","undefined","refetchOnMountOrArgChange","subscription","cmsAiEnabled","totalCredits","cmsAiCreditsBase","usedCredits","cmsAiCreditsUsed","maxCredits","cmsAiCreditsMaxUsage","overage","percentRemaining","percentOverage","isInOverages","_jsxs","col","s","direction","alignItems","gap","_jsx","Typography","variant","textColor","id","defaultMessage","Flex","_Fragment","width","value","size","toFixed","color"],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var api = require('../../../../admin/src/services/api.js');
|
|
4
|
+
|
|
5
|
+
const aiService = api.adminApi.injectEndpoints({
|
|
6
|
+
endpoints: (builder)=>({
|
|
7
|
+
getAIUsage: builder.query({
|
|
8
|
+
query: ()=>({
|
|
9
|
+
method: 'GET',
|
|
10
|
+
url: `/admin/ai-usage`
|
|
11
|
+
})
|
|
12
|
+
}),
|
|
13
|
+
getAiToken: builder.query({
|
|
14
|
+
query: ()=>({
|
|
15
|
+
method: 'GET',
|
|
16
|
+
url: '/admin/ai-token'
|
|
17
|
+
}),
|
|
18
|
+
transformResponse (res) {
|
|
19
|
+
return res.data;
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
}),
|
|
23
|
+
overrideExisting: false
|
|
24
|
+
});
|
|
25
|
+
const { useGetAIUsageQuery, useGetAiTokenQuery, useLazyGetAiTokenQuery } = aiService;
|
|
26
|
+
|
|
27
|
+
exports.useGetAIUsageQuery = useGetAIUsageQuery;
|
|
28
|
+
exports.useGetAiTokenQuery = useGetAiTokenQuery;
|
|
29
|
+
exports.useLazyGetAiTokenQuery = useLazyGetAiTokenQuery;
|
|
30
|
+
//# sourceMappingURL=ai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.js","sources":["../../../../../../ee/admin/src/services/ai.ts"],"sourcesContent":["import { adminApi } from '../../../../admin/src/services/api';\nimport { GetAiUsage, GetAiToken } from '../../../../shared/contracts/ai';\n\nconst aiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAIUsage: builder.query<GetAiUsage.Response, void>({\n query: () => ({\n method: 'GET',\n url: `/admin/ai-usage`,\n }),\n }),\n getAiToken: builder.query<GetAiToken.Response['data'], void>({\n query: () => ({\n method: 'GET',\n url: '/admin/ai-token',\n }),\n transformResponse(res: GetAiToken.Response) {\n return res.data;\n },\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetAIUsageQuery, useGetAiTokenQuery, useLazyGetAiTokenQuery } = aiService;\n\nexport { useGetAIUsageQuery, useGetAiTokenQuery, useLazyGetAiTokenQuery };\n"],"names":["aiService","adminApi","injectEndpoints","endpoints","builder","getAIUsage","query","method","url","getAiToken","transformResponse","res","data","overrideExisting","useGetAIUsageQuery","useGetAiTokenQuery","useLazyGetAiTokenQuery"],"mappings":";;;;AAGA,MAAMA,SAAAA,GAAYC,YAASC,CAAAA,eAAe,CAAC;IACzCC,SAAW,EAAA,CAACC,WAAa;YACvBC,UAAYD,EAAAA,OAAAA,CAAQE,KAAK,CAA4B;AACnDA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,MAAQ,EAAA,KAAA;wBACRC,GAAK,EAAA,CAAC,eAAe;qBACvB;AACF,aAAA,CAAA;YACAC,UAAYL,EAAAA,OAAAA,CAAQE,KAAK,CAAoC;AAC3DA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,MAAQ,EAAA,KAAA;wBACRC,GAAK,EAAA;qBACP,CAAA;AACAE,gBAAAA,iBAAAA,CAAAA,CAAkBC,GAAwB,EAAA;AACxC,oBAAA,OAAOA,IAAIC,IAAI;AACjB;AACF,aAAA;SACF,CAAA;IACAC,gBAAkB,EAAA;AACpB,CAAA,CAAA;AAEA,MAAM,EAAEC,kBAAkB,EAAEC,kBAAkB,EAAEC,sBAAsB,EAAE,GAAGhB;;;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { adminApi } from '../../../../admin/src/services/api.mjs';
|
|
2
|
+
|
|
3
|
+
const aiService = adminApi.injectEndpoints({
|
|
4
|
+
endpoints: (builder)=>({
|
|
5
|
+
getAIUsage: builder.query({
|
|
6
|
+
query: ()=>({
|
|
7
|
+
method: 'GET',
|
|
8
|
+
url: `/admin/ai-usage`
|
|
9
|
+
})
|
|
10
|
+
}),
|
|
11
|
+
getAiToken: builder.query({
|
|
12
|
+
query: ()=>({
|
|
13
|
+
method: 'GET',
|
|
14
|
+
url: '/admin/ai-token'
|
|
15
|
+
}),
|
|
16
|
+
transformResponse (res) {
|
|
17
|
+
return res.data;
|
|
18
|
+
}
|
|
19
|
+
})
|
|
20
|
+
}),
|
|
21
|
+
overrideExisting: false
|
|
22
|
+
});
|
|
23
|
+
const { useGetAIUsageQuery, useGetAiTokenQuery, useLazyGetAiTokenQuery } = aiService;
|
|
24
|
+
|
|
25
|
+
export { useGetAIUsageQuery, useGetAiTokenQuery, useLazyGetAiTokenQuery };
|
|
26
|
+
//# sourceMappingURL=ai.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.mjs","sources":["../../../../../../ee/admin/src/services/ai.ts"],"sourcesContent":["import { adminApi } from '../../../../admin/src/services/api';\nimport { GetAiUsage, GetAiToken } from '../../../../shared/contracts/ai';\n\nconst aiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAIUsage: builder.query<GetAiUsage.Response, void>({\n query: () => ({\n method: 'GET',\n url: `/admin/ai-usage`,\n }),\n }),\n getAiToken: builder.query<GetAiToken.Response['data'], void>({\n query: () => ({\n method: 'GET',\n url: '/admin/ai-token',\n }),\n transformResponse(res: GetAiToken.Response) {\n return res.data;\n },\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetAIUsageQuery, useGetAiTokenQuery, useLazyGetAiTokenQuery } = aiService;\n\nexport { useGetAIUsageQuery, useGetAiTokenQuery, useLazyGetAiTokenQuery };\n"],"names":["aiService","adminApi","injectEndpoints","endpoints","builder","getAIUsage","query","method","url","getAiToken","transformResponse","res","data","overrideExisting","useGetAIUsageQuery","useGetAiTokenQuery","useLazyGetAiTokenQuery"],"mappings":";;AAGA,MAAMA,SAAAA,GAAYC,QAASC,CAAAA,eAAe,CAAC;IACzCC,SAAW,EAAA,CAACC,WAAa;YACvBC,UAAYD,EAAAA,OAAAA,CAAQE,KAAK,CAA4B;AACnDA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,MAAQ,EAAA,KAAA;wBACRC,GAAK,EAAA,CAAC,eAAe;qBACvB;AACF,aAAA,CAAA;YACAC,UAAYL,EAAAA,OAAAA,CAAQE,KAAK,CAAoC;AAC3DA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,MAAQ,EAAA,KAAA;wBACRC,GAAK,EAAA;qBACP,CAAA;AACAE,gBAAAA,iBAAAA,CAAAA,CAAkBC,GAAwB,EAAA;AACxC,oBAAA,OAAOA,IAAIC,IAAI;AACjB;AACF,aAAA;SACF,CAAA;IACAC,gBAAkB,EAAA;AACpB,CAAA,CAAA;AAEA,MAAM,EAAEC,kBAAkB,EAAEC,kBAAkB,EAAEC,sBAAsB,EAAE,GAAGhB;;;;"}
|
package/dist/admin/ee.js
CHANGED
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
var useLicenseLimits = require('./ee/admin/src/hooks/useLicenseLimits.js');
|
|
4
4
|
var useEnterprise = require('./admin/src/hooks/useEnterprise.js');
|
|
5
|
+
var ai = require('./ee/admin/src/services/ai.js');
|
|
6
|
+
var useAIAvailability = require('./ee/admin/src/hooks/useAIAvailability.js');
|
|
5
7
|
|
|
6
8
|
|
|
7
9
|
|
|
8
10
|
exports.useLicenseLimits = useLicenseLimits.useLicenseLimits;
|
|
9
11
|
exports.useEnterprise = useEnterprise.useEnterprise;
|
|
12
|
+
exports.useGetAIUsageQuery = ai.useGetAIUsageQuery;
|
|
13
|
+
exports.useAIAvailability = useAIAvailability.useAIAvailability;
|
|
10
14
|
//# sourceMappingURL=ee.js.map
|
package/dist/admin/ee.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ee.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ee.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
package/dist/admin/ee.mjs
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { useLicenseLimits } from './ee/admin/src/hooks/useLicenseLimits.mjs';
|
|
2
2
|
export { useEnterprise } from './admin/src/hooks/useEnterprise.mjs';
|
|
3
|
+
export { useGetAIUsageQuery } from './ee/admin/src/services/ai.mjs';
|
|
4
|
+
export { useAIAvailability } from './ee/admin/src/hooks/useAIAvailability.mjs';
|
|
3
5
|
//# sourceMappingURL=ee.mjs.map
|
package/dist/admin/ee.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ee.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ee.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
package/dist/admin/index.js
CHANGED
|
@@ -34,6 +34,7 @@ var useClipboard = require('./admin/src/hooks/useClipboard.js');
|
|
|
34
34
|
var useElementOnScreen = require('./admin/src/hooks/useElementOnScreen.js');
|
|
35
35
|
var users = require('./admin/src/services/users.js');
|
|
36
36
|
var homepage = require('./admin/src/services/homepage.js');
|
|
37
|
+
var useAIAvailability = require('./admin/src/hooks/useAIAvailability.js');
|
|
37
38
|
var translatedErrors = require('./admin/src/utils/translatedErrors.js');
|
|
38
39
|
var getFetchClient = require('./admin/src/utils/getFetchClient.js');
|
|
39
40
|
var baseQuery = require('./admin/src/utils/baseQuery.js');
|
|
@@ -84,6 +85,7 @@ exports.useClipboard = useClipboard.useClipboard;
|
|
|
84
85
|
exports.useElementOnScreen = useElementOnScreen.useElementOnScreen;
|
|
85
86
|
exports.useAdminUsers = users.useAdminUsers;
|
|
86
87
|
exports.useGetCountDocumentsQuery = homepage.useGetCountDocumentsQuery;
|
|
88
|
+
exports.useAIAvailability = useAIAvailability.useAIAvailability;
|
|
87
89
|
exports.translatedErrors = translatedErrors.translatedErrors;
|
|
88
90
|
exports.FetchError = getFetchClient.FetchError;
|
|
89
91
|
exports.getFetchClient = getFetchClient.getFetchClient;
|
package/dist/admin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/admin/index.mjs
CHANGED
|
@@ -32,6 +32,7 @@ export { useClipboard } from './admin/src/hooks/useClipboard.mjs';
|
|
|
32
32
|
export { useElementOnScreen } from './admin/src/hooks/useElementOnScreen.mjs';
|
|
33
33
|
export { useAdminUsers } from './admin/src/services/users.mjs';
|
|
34
34
|
export { useGetCountDocumentsQuery } from './admin/src/services/homepage.mjs';
|
|
35
|
+
export { useAIAvailability } from './admin/src/hooks/useAIAvailability.mjs';
|
|
35
36
|
export { translatedErrors } from './admin/src/utils/translatedErrors.mjs';
|
|
36
37
|
export { FetchError, getFetchClient, isFetchError } from './admin/src/utils/getFetchClient.mjs';
|
|
37
38
|
export { fetchBaseQuery, isBaseQueryError } from './admin/src/utils/baseQuery.mjs';
|
package/dist/admin/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -34,10 +34,17 @@ type Action = {
|
|
|
34
34
|
} | {
|
|
35
35
|
type: 'remove_completed_action';
|
|
36
36
|
payload: ValueOf<CompletedActions>;
|
|
37
|
+
} | {
|
|
38
|
+
type: 'set_tour_type';
|
|
39
|
+
payload: {
|
|
40
|
+
tourName: ValidTourName;
|
|
41
|
+
tourType: 'ContentTypeBuilderAI' | 'ContentTypeBuilderNoAI';
|
|
42
|
+
};
|
|
37
43
|
};
|
|
38
44
|
type TourState = Record<ValidTourName, {
|
|
39
45
|
currentStep: number;
|
|
40
46
|
isCompleted: boolean;
|
|
47
|
+
tourType?: string;
|
|
41
48
|
}>;
|
|
42
49
|
type State = {
|
|
43
50
|
tours: TourState;
|
|
@@ -3,22 +3,13 @@ import { type StepContentProps } from '../Tours';
|
|
|
3
3
|
export declare const contentTypeBuilderSteps: readonly [{
|
|
4
4
|
readonly name: "Introduction";
|
|
5
5
|
readonly content: ({ Step }: StepContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
}, {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}, {
|
|
13
|
-
readonly name: "Components";
|
|
14
|
-
readonly content: ({ Step }: StepContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
-
}, {
|
|
16
|
-
readonly name: "YourTurn";
|
|
17
|
-
readonly content: ({ Step }: StepContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
}, {
|
|
19
|
-
readonly name: "AddFields";
|
|
20
|
-
readonly content: ({ Step, dispatch }: StepContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
-
}, {
|
|
6
|
+
}, ...({
|
|
7
|
+
name: string;
|
|
8
|
+
content: ({ Step }: StepContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
} | {
|
|
10
|
+
name: string;
|
|
11
|
+
content: ({ Step }: StepContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
})[], {
|
|
22
13
|
readonly name: "Save";
|
|
23
14
|
readonly when: (completedActions: CompletedActions) => boolean;
|
|
24
15
|
readonly content: ({ Step, dispatch }: StepContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,28 +3,7 @@ import { type State, type Action, CompletedActions } from './Context';
|
|
|
3
3
|
import { type Step } from './Steps/Step';
|
|
4
4
|
declare const tours: {
|
|
5
5
|
readonly contentTypeBuilder: {
|
|
6
|
-
|
|
7
|
-
children: React.ReactNode;
|
|
8
|
-
}>;
|
|
9
|
-
Introduction: React.ComponentType<{
|
|
10
|
-
children: React.ReactNode;
|
|
11
|
-
}>;
|
|
12
|
-
CollectionTypes: React.ComponentType<{
|
|
13
|
-
children: React.ReactNode;
|
|
14
|
-
}>;
|
|
15
|
-
SingleTypes: React.ComponentType<{
|
|
16
|
-
children: React.ReactNode;
|
|
17
|
-
}>;
|
|
18
|
-
Components: React.ComponentType<{
|
|
19
|
-
children: React.ReactNode;
|
|
20
|
-
}>;
|
|
21
|
-
YourTurn: React.ComponentType<{
|
|
22
|
-
children: React.ReactNode;
|
|
23
|
-
}>;
|
|
24
|
-
AddFields: React.ComponentType<{
|
|
25
|
-
children: React.ReactNode;
|
|
26
|
-
}>;
|
|
27
|
-
Finish: React.ComponentType<{
|
|
6
|
+
[x: string]: React.ComponentType<{
|
|
28
7
|
children: React.ReactNode;
|
|
29
8
|
}>;
|
|
30
9
|
} & {
|
package/dist/admin/src/ee.d.ts
CHANGED
|
@@ -3,3 +3,5 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { useLicenseLimits } from '../../ee/admin/src/hooks/useLicenseLimits';
|
|
5
5
|
export { useEnterprise } from './hooks/useEnterprise';
|
|
6
|
+
export { useGetAIUsageQuery } from '../../ee/admin/src/services/ai';
|
|
7
|
+
export { useAIAvailability } from '../../ee/admin/src/hooks/useAIAvailability';
|
|
@@ -5,6 +5,7 @@ export interface TelemetryProperties {
|
|
|
5
5
|
useTypescriptOnServer?: boolean;
|
|
6
6
|
useTypescriptOnAdmin?: boolean;
|
|
7
7
|
isHostedOnStrapiCloud?: boolean;
|
|
8
|
+
aiLicenseKey?: string;
|
|
8
9
|
numberOfAllContentTypes?: number;
|
|
9
10
|
numberOfComponents?: number;
|
|
10
11
|
numberOfDynamicZones?: number;
|
|
@@ -25,7 +26,7 @@ declare const TrackingProvider: ({ children }: TrackingProviderProps) => import(
|
|
|
25
26
|
* event so understanding which properties go with which event is very helpful.
|
|
26
27
|
*/
|
|
27
28
|
export interface EventWithoutProperties {
|
|
28
|
-
name: 'changeComponentsOrder' | 'didAddComponentToDynamicZone' | 'didBulkDeleteEntries' | 'didNotBulkDeleteEntries' | 'didChangeDisplayedFields' | 'didCheckDraftRelations' | 'didClickGuidedTourHomepageApiTokens' | 'didClickGuidedTourHomepageContentManager' | 'didClickGuidedTourHomepageContentTypeBuilder' | 'didClickGuidedTourStep1CollectionType' | 'didClickGuidedTourStep2ContentManager' | 'didClickGuidedTourStep3ApiTokens' | 'didClickonBlogSection' | 'didClickonCodeExampleSection' | 'didClickonReadTheDocumentationSection' | 'didClickOnTryStrapiCloudSection' | 'didClickonTutorialSection' | 'didCreateGuidedTourCollectionType' | 'didCreateGuidedTourEntry' | 'didCreateNewRole' | 'didCreateRole' | 'didDeleteToken' | 'didDuplicateRole' | 'didEditEditSettings' | 'didEditEmailTemplates' | 'didEditFieldNameOnContentType' | 'didEditListSettings' | 'didEditMediaLibraryConfig' | 'didEditNameOfContentType' | 'didGenerateGuidedTourApiTokens' | 'didGoToMarketplace' | 'didLaunchGuidedtour' | 'didMissMarketplacePlugin' | 'didNotCreateFirstAdmin' | 'didNotSaveComponent' | 'didPluginLearnMore' | 'didBulkPublishEntries' | 'didNotBulkPublishEntries' | 'didUnpublishEntry' | 'didBulkUnpublishEntries' | 'didNotBulkUnpublishEntries' | 'didSaveComponent' | 'didSaveContentType' | 'didSearch' | 'didSkipGuidedtour' | 'didSubmitPlugin' | 'didSubmitProvider' | 'didUpdateConditions' | 'didSelectAllMediaLibraryElements' | 'didSelectContentTypeFieldSettings' | 'didSelectContentTypeSettings' | 'didEditAuthenticationProvider' | 'didRestoreHistoryVersion' | 'hasClickedCTBAddFieldBanner' | 'removeComponentFromDynamicZone' | 'willAddMoreFieldToContentType' | 'willBulkDeleteEntries' | 'willBulkPublishEntries' | 'willBulkUnpublishEntries' | 'willChangeNumberOfEntriesPerPage' | 'willCheckDraftRelations' | 'willCreateComponent' | 'willCreateComponentFromAttributesModal' | 'willCreateContentType' | 'willCreateFirstAdmin' | 'willCreateNewRole' | 'willCreateRole' | 'willCreateSingleType' | 'willCreateStage' | 'willCreateWorkflow' | 'willDeleteEntryFromList' | 'willDeleteFieldOfContentType' | 'willDuplicateRole' | 'willEditEditLayout' | 'willEditEmailTemplates' | 'willEditEntryFromButton' | 'willEditEntryFromList' | 'willEditReleaseFromHome' | 'willEditFieldOfContentType' | 'willEditMediaLibraryConfig' | 'willEditNameOfContentType' | 'willEditNameOfSingleType' | 'willEditAuthenticationProvider' | 'willEditFieldNameOnContentType' | 'willEditStage' | 'willFilterEntries' | 'willInstallPlugin' | 'willOpenAuditLogDetailsFromHome' | 'willUnpublishEntry' | 'willSaveComponent' | 'willSaveContentType' | 'willSaveContentTypeLayout' | 'didEditFieldNameOnContentType' | 'didCreateRelease' | 'didLaunchGuidedtour';
|
|
29
|
+
name: 'changeComponentsOrder' | 'didAddComponentToDynamicZone' | 'didBulkDeleteEntries' | 'didNotBulkDeleteEntries' | 'didChangeDisplayedFields' | 'didCheckDraftRelations' | 'didClickGuidedTourHomepageApiTokens' | 'didClickGuidedTourHomepageContentManager' | 'didClickGuidedTourHomepageContentTypeBuilder' | 'didClickGuidedTourStep1CollectionType' | 'didClickGuidedTourStep2ContentManager' | 'didClickGuidedTourStep3ApiTokens' | 'didClickonBlogSection' | 'didClickonCodeExampleSection' | 'didClickonReadTheDocumentationSection' | 'didClickOnTryStrapiCloudSection' | 'didClickonTutorialSection' | 'didCreateGuidedTourCollectionType' | 'didCreateGuidedTourEntry' | 'didCreateNewRole' | 'didCreateRole' | 'didDeleteToken' | 'didDuplicateRole' | 'didEditEditSettings' | 'didEditEmailTemplates' | 'didEditFieldNameOnContentType' | 'didEditListSettings' | 'didEditMediaLibraryConfig' | 'didEditNameOfContentType' | 'didGenerateGuidedTourApiTokens' | 'didGoToMarketplace' | 'didLaunchGuidedtour' | 'didMissMarketplacePlugin' | 'didNotCreateFirstAdmin' | 'didNotSaveComponent' | 'didPluginLearnMore' | 'didBulkPublishEntries' | 'didNotBulkPublishEntries' | 'didUnpublishEntry' | 'didBulkUnpublishEntries' | 'didNotBulkUnpublishEntries' | 'didSaveComponent' | 'didSaveContentType' | 'didSearch' | 'didSkipGuidedtour' | 'didSubmitPlugin' | 'didSubmitProvider' | 'didUpdateConditions' | 'didSelectAllMediaLibraryElements' | 'didSelectContentTypeFieldSettings' | 'didSelectContentTypeSettings' | 'didEditAuthenticationProvider' | 'didRestoreHistoryVersion' | 'hasClickedCTBAddFieldBanner' | 'removeComponentFromDynamicZone' | 'willAddMoreFieldToContentType' | 'willBulkDeleteEntries' | 'willBulkPublishEntries' | 'willBulkUnpublishEntries' | 'willChangeNumberOfEntriesPerPage' | 'willCheckDraftRelations' | 'willCreateComponent' | 'willCreateComponentFromAttributesModal' | 'willCreateContentType' | 'willCreateFirstAdmin' | 'willCreateNewRole' | 'willCreateRole' | 'willCreateSingleType' | 'willCreateStage' | 'willCreateWorkflow' | 'willDeleteEntryFromList' | 'willDeleteFieldOfContentType' | 'willDuplicateRole' | 'willEditEditLayout' | 'willEditEmailTemplates' | 'willEditEntryFromButton' | 'willEditEntryFromList' | 'willEditReleaseFromHome' | 'willEditFieldOfContentType' | 'willEditMediaLibraryConfig' | 'willEditNameOfContentType' | 'willEditNameOfSingleType' | 'willEditAuthenticationProvider' | 'willEditFieldNameOnContentType' | 'willEditStage' | 'willFilterEntries' | 'willInstallPlugin' | 'willOpenAuditLogDetailsFromHome' | 'willUnpublishEntry' | 'willSaveComponent' | 'willSaveContentType' | 'willSaveContentTypeLayout' | 'didEditFieldNameOnContentType' | 'didCreateRelease' | 'didStartNewChat' | 'didLaunchGuidedtour';
|
|
29
30
|
properties?: never;
|
|
30
31
|
}
|
|
31
32
|
interface DidAccessAuthenticatedAdministrationEvent {
|
|
@@ -172,6 +173,24 @@ interface DidPublishRelease {
|
|
|
172
173
|
totalUnpublishedEntries: number;
|
|
173
174
|
};
|
|
174
175
|
}
|
|
176
|
+
interface DidUsePresetPromptEvent {
|
|
177
|
+
name: 'didUsePresetPrompt';
|
|
178
|
+
properties: {
|
|
179
|
+
promptType: 'generate-product-schema' | 'tell-me-about-the-content-type-builder' | 'tell-me-about-strapi';
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
interface DidAnswerMessageEvent {
|
|
183
|
+
name: 'didAnswerMessage';
|
|
184
|
+
properties: {
|
|
185
|
+
successful: boolean;
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
interface DidVoteAnswerEvent {
|
|
189
|
+
name: 'didVoteAnswer';
|
|
190
|
+
properties: {
|
|
191
|
+
value: 'positive' | 'negative';
|
|
192
|
+
};
|
|
193
|
+
}
|
|
175
194
|
interface DidUpdateCTBSchema {
|
|
176
195
|
name: 'didUpdateCTBSchema';
|
|
177
196
|
properties: {
|
|
@@ -224,7 +243,7 @@ interface DidOpenKeyStatisticsWidgetLink {
|
|
|
224
243
|
itemKey: string;
|
|
225
244
|
};
|
|
226
245
|
}
|
|
227
|
-
type EventsWithProperties = CreateEntryEvents | PublishEntryEvents | DidAccessAuthenticatedAdministrationEvent | DidAccessTokenListEvent | DidChangeModeEvent | DidCropFileEvent | DeleteEntryEvents | DidEditMediaLibraryElementsEvent | DidFilterMediaLibraryElementsEvent | DidFilterEntriesEvent | DidSelectContentTypeFieldTypeEvent | DidSelectFile | DidSortMediaLibraryElementsEvent | DidSubmitWithErrorsFirstAdminEvent | LogoEvent | TokenEvents | UpdateEntryEvents | WillModifyTokenEvent | WillNavigateEvent | DidPublishRelease | MediaEvents | DidUpdateCTBSchema | DidSkipGuidedTour | DidCompleteGuidedTour | DidStartGuidedTour | DidOpenHomeWidgetLink | DidOpenKeyStatisticsWidgetLink | WillEditEntryFromHome;
|
|
246
|
+
type EventsWithProperties = CreateEntryEvents | PublishEntryEvents | DidAccessAuthenticatedAdministrationEvent | DidAccessTokenListEvent | DidChangeModeEvent | DidCropFileEvent | DeleteEntryEvents | DidEditMediaLibraryElementsEvent | DidFilterMediaLibraryElementsEvent | DidFilterEntriesEvent | DidSelectContentTypeFieldTypeEvent | DidSelectFile | DidSortMediaLibraryElementsEvent | DidSubmitWithErrorsFirstAdminEvent | DidUsePresetPromptEvent | DidAnswerMessageEvent | DidVoteAnswerEvent | LogoEvent | TokenEvents | UpdateEntryEvents | WillModifyTokenEvent | WillNavigateEvent | DidPublishRelease | MediaEvents | DidUpdateCTBSchema | DidSkipGuidedTour | DidCompleteGuidedTour | DidStartGuidedTour | DidOpenHomeWidgetLink | DidOpenKeyStatisticsWidgetLink | WillEditEntryFromHome;
|
|
228
247
|
export type TrackingEvent = EventWithoutProperties | EventsWithProperties;
|
|
229
248
|
export interface UseTrackingReturn {
|
|
230
249
|
/**
|