@webiny/app-audit-logs 0.0.0-unstable.0156a4c312
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/LICENSE +21 -0
- package/README.md +11 -0
- package/SecurityPermission.d.ts +2 -0
- package/SecurityPermission.js +15 -0
- package/SecurityPermission.js.map +1 -0
- package/components/Text.d.ts +10 -0
- package/components/Text.js +35 -0
- package/components/Text.js.map +1 -0
- package/config/list/AuditLogsListConfig.d.ts +55 -0
- package/config/list/AuditLogsListConfig.js +44 -0
- package/config/list/AuditLogsListConfig.js.map +1 -0
- package/config/list/Browser/Filter.d.ts +39 -0
- package/config/list/Browser/Filter.js +37 -0
- package/config/list/Browser/Filter.js.map +1 -0
- package/config/list/Browser/FiltersToWhere.d.ts +7 -0
- package/config/list/Browser/FiltersToWhere.js +13 -0
- package/config/list/Browser/FiltersToWhere.js.map +1 -0
- package/config/list/Browser/index.d.ts +37 -0
- package/config/list/Browser/index.js +9 -0
- package/config/list/Browser/index.js.map +1 -0
- package/config/list/Details/PreviewTab.d.ts +15 -0
- package/config/list/Details/PreviewTab.js +32 -0
- package/config/list/Details/PreviewTab.js.map +1 -0
- package/config/list/Details/index.d.ts +8 -0
- package/config/list/Details/index.js +7 -0
- package/config/list/Details/index.js.map +1 -0
- package/config/list/index.d.ts +1 -0
- package/config/list/index.js +1 -0
- package/constants/index.d.ts +1 -0
- package/constants/index.js +4 -0
- package/constants/index.js.map +1 -0
- package/domain/permissionsSchema.d.ts +4 -0
- package/domain/permissionsSchema.js +8 -0
- package/domain/permissionsSchema.js.map +1 -0
- package/features/listAuditLogs/ListAuditLogsGateway.d.ts +11 -0
- package/features/listAuditLogs/ListAuditLogsGateway.js +71 -0
- package/features/listAuditLogs/ListAuditLogsGateway.js.map +1 -0
- package/features/listAuditLogs/ListAuditLogsRepository.d.ts +11 -0
- package/features/listAuditLogs/ListAuditLogsRepository.js +35 -0
- package/features/listAuditLogs/ListAuditLogsRepository.js.map +1 -0
- package/features/listAuditLogs/ListAuditLogsUseCase.d.ts +10 -0
- package/features/listAuditLogs/ListAuditLogsUseCase.js +19 -0
- package/features/listAuditLogs/ListAuditLogsUseCase.js.map +1 -0
- package/features/listAuditLogs/abstractions/ListAuditLogsGateway.d.ts +20 -0
- package/features/listAuditLogs/abstractions/ListAuditLogsGateway.js +5 -0
- package/features/listAuditLogs/abstractions/ListAuditLogsGateway.js.map +1 -0
- package/features/listAuditLogs/abstractions/ListAuditLogsRepository.d.ts +20 -0
- package/features/listAuditLogs/abstractions/ListAuditLogsRepository.js +5 -0
- package/features/listAuditLogs/abstractions/ListAuditLogsRepository.js.map +1 -0
- package/features/listAuditLogs/abstractions/ListAuditLogsUseCase.d.ts +20 -0
- package/features/listAuditLogs/abstractions/ListAuditLogsUseCase.js +5 -0
- package/features/listAuditLogs/abstractions/ListAuditLogsUseCase.js.map +1 -0
- package/features/listAuditLogs/abstractions/index.d.ts +6 -0
- package/features/listAuditLogs/abstractions/index.js +3 -0
- package/features/listAuditLogs/feature.d.ts +3 -0
- package/features/listAuditLogs/feature.js +21 -0
- package/features/listAuditLogs/feature.js.map +1 -0
- package/features/listAuditLogs/index.d.ts +1 -0
- package/features/listAuditLogs/index.js +1 -0
- package/features/permissions/abstractions.d.ts +17 -0
- package/features/permissions/abstractions.js +6 -0
- package/features/permissions/abstractions.js.map +1 -0
- package/features/permissions/feature.d.ts +14 -0
- package/features/permissions/feature.js +7 -0
- package/features/permissions/feature.js.map +1 -0
- package/graphql.d.ts +1 -0
- package/graphql.js +27 -0
- package/graphql.js.map +1 -0
- package/hooks/graphql.d.ts +9 -0
- package/hooks/graphql.js +0 -0
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +1 -0
- package/hooks/schema.d.ts +35 -0
- package/hooks/schema.js +27 -0
- package/hooks/schema.js.map +1 -0
- package/hooks/useAuditLogsList.d.ts +16 -0
- package/hooks/useAuditLogsList.js +101 -0
- package/hooks/useAuditLogsList.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +51 -0
- package/index.js.map +1 -0
- package/package.json +46 -0
- package/routes.d.ts +4 -0
- package/routes.js +10 -0
- package/routes.js.map +1 -0
- package/types.d.ts +56 -0
- package/types.js +1 -0
- package/utils/transformRawAuditLog.d.ts +5 -0
- package/utils/transformRawAuditLog.js +26 -0
- package/utils/transformRawAuditLog.js.map +1 -0
- package/views/Logs/Filters/FilterByAction.d.ts +2 -0
- package/views/Logs/Filters/FilterByAction.js +46 -0
- package/views/Logs/Filters/FilterByAction.js.map +1 -0
- package/views/Logs/Filters/FilterByApp.d.ts +2 -0
- package/views/Logs/Filters/FilterByApp.js +38 -0
- package/views/Logs/Filters/FilterByApp.js.map +1 -0
- package/views/Logs/Filters/FilterByCreatedBy.d.ts +2 -0
- package/views/Logs/Filters/FilterByCreatedBy.js +50 -0
- package/views/Logs/Filters/FilterByCreatedBy.js.map +1 -0
- package/views/Logs/Filters/FilterByCreatedOn.d.ts +2 -0
- package/views/Logs/Filters/FilterByCreatedOn.js +38 -0
- package/views/Logs/Filters/FilterByCreatedOn.js.map +1 -0
- package/views/Logs/Filters/FilterByEntity.d.ts +2 -0
- package/views/Logs/Filters/FilterByEntity.js +46 -0
- package/views/Logs/Filters/FilterByEntity.js.map +1 -0
- package/views/Logs/Filters/FilterByEntityId.d.ts +2 -0
- package/views/Logs/Filters/FilterByEntityId.js +26 -0
- package/views/Logs/Filters/FilterByEntityId.js.map +1 -0
- package/views/Logs/Filters/FilterByInitiator.d.ts +2 -0
- package/views/Logs/Filters/FilterByInitiator.js +49 -0
- package/views/Logs/Filters/FilterByInitiator.js.map +1 -0
- package/views/Logs/Filters/Filters.d.ts +7 -0
- package/views/Logs/Filters/Filters.js +69 -0
- package/views/Logs/Filters/Filters.js.map +1 -0
- package/views/Logs/Filters/index.d.ts +7 -0
- package/views/Logs/Filters/index.js +7 -0
- package/views/Logs/Filters/types.d.ts +9 -0
- package/views/Logs/Filters/types.js +0 -0
- package/views/Logs/Header/ButtonFilters/ButtonFilters.d.ts +8 -0
- package/views/Logs/Header/ButtonFilters/ButtonFilters.js +27 -0
- package/views/Logs/Header/ButtonFilters/ButtonFilters.js.map +1 -0
- package/views/Logs/Header/ButtonFilters/index.d.ts +1 -0
- package/views/Logs/Header/ButtonFilters/index.js +1 -0
- package/views/Logs/Header/Header.d.ts +7 -0
- package/views/Logs/Header/Header.js +14 -0
- package/views/Logs/Header/Header.js.map +1 -0
- package/views/Logs/Header/index.d.ts +1 -0
- package/views/Logs/Header/index.js +1 -0
- package/views/Logs/LoadMoreButton/LoadMoreButton.d.ts +9 -0
- package/views/Logs/LoadMoreButton/LoadMoreButton.js +16 -0
- package/views/Logs/LoadMoreButton/LoadMoreButton.js.map +1 -0
- package/views/Logs/LoadMoreButton/index.d.ts +1 -0
- package/views/Logs/LoadMoreButton/index.js +1 -0
- package/views/Logs/LoadMoreButton/styled.d.ts +4 -0
- package/views/Logs/LoadMoreButton/styled.js +7 -0
- package/views/Logs/LoadMoreButton/styled.js.map +1 -0
- package/views/Logs/LoadingMore/index.d.ts +2 -0
- package/views/Logs/LoadingMore/index.js +16 -0
- package/views/Logs/LoadingMore/index.js.map +1 -0
- package/views/Logs/LogsModule.d.ts +2 -0
- package/views/Logs/LogsModule.js +26 -0
- package/views/Logs/LogsModule.js.map +1 -0
- package/views/Logs/LogsView.d.ts +2 -0
- package/views/Logs/LogsView.js +73 -0
- package/views/Logs/LogsView.js.map +1 -0
- package/views/Logs/Preview/AuditLogDetailsPresenter.d.ts +13 -0
- package/views/Logs/Preview/AuditLogDetailsPresenter.js +36 -0
- package/views/Logs/Preview/AuditLogDetailsPresenter.js.map +1 -0
- package/views/Logs/Preview/Preview.d.ts +11 -0
- package/views/Logs/Preview/Preview.js +127 -0
- package/views/Logs/Preview/Preview.js.map +1 -0
- package/views/Logs/Preview/abstractions.d.ts +14 -0
- package/views/Logs/Preview/abstractions.js +5 -0
- package/views/Logs/Preview/abstractions.js.map +1 -0
- package/views/Logs/Preview/feature.d.ts +5 -0
- package/views/Logs/Preview/feature.js +22 -0
- package/views/Logs/Preview/feature.js.map +1 -0
- package/views/Logs/Preview/index.d.ts +3 -0
- package/views/Logs/Preview/index.js +2 -0
- package/views/Logs/Preview/tabs/AiPromptTabs.d.ts +2 -0
- package/views/Logs/Preview/tabs/AiPromptTabs.js +25 -0
- package/views/Logs/Preview/tabs/AiPromptTabs.js.map +1 -0
- package/views/Logs/Preview/tabs/LlmResponseTab.d.ts +4 -0
- package/views/Logs/Preview/tabs/LlmResponseTab.js +41 -0
- package/views/Logs/Preview/tabs/LlmResponseTab.js.map +1 -0
- package/views/Logs/Preview/tabs/SystemPromptTab.d.ts +4 -0
- package/views/Logs/Preview/tabs/SystemPromptTab.js +24 -0
- package/views/Logs/Preview/tabs/SystemPromptTab.js.map +1 -0
- package/views/Logs/Preview/tabs/UserPromptTab.d.ts +4 -0
- package/views/Logs/Preview/tabs/UserPromptTab.js +18 -0
- package/views/Logs/Preview/tabs/UserPromptTab.js.map +1 -0
- package/views/Logs/Preview/tabs/shared.d.ts +28 -0
- package/views/Logs/Preview/tabs/shared.js +16 -0
- package/views/Logs/Preview/tabs/shared.js.map +1 -0
- package/views/Logs/Table/Table.d.ts +21 -0
- package/views/Logs/Table/Table.js +117 -0
- package/views/Logs/Table/Table.js.map +1 -0
- package/views/Logs/Table/index.d.ts +1 -0
- package/views/Logs/Table/index.js +1 -0
- package/views/Logs/Table/styled.d.ts +1 -0
- package/views/Logs/Table/styled.js +17 -0
- package/views/Logs/Table/styled.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views/Logs/Preview/feature.js","sources":["../../../../src/views/Logs/Preview/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { useFeature } from \"@webiny/app-admin\";\nimport { AuditLogDetailsPresenter as Abstraction } from \"./abstractions.js\";\nimport { AuditLogDetailsPresenter } from \"./AuditLogDetailsPresenter.js\";\n\nexport const AuditLogDetailsPresenterFeature = createFeature({\n name: \"AuditLogs/DetailsPresenter\",\n register(container) {\n container.register(AuditLogDetailsPresenter).inSingletonScope();\n },\n resolve(container) {\n return {\n presenter: container.resolve(Abstraction)\n };\n }\n});\n\nexport function useAuditLogDetailsPresenter(): Abstraction.Interface {\n const { presenter } = useFeature(AuditLogDetailsPresenterFeature);\n return presenter;\n}\n"],"names":["AuditLogDetailsPresenterFeature","createFeature","container","AuditLogDetailsPresenter","Abstraction","useAuditLogDetailsPresenter","presenter","useFeature"],"mappings":";;;;AAKO,MAAMA,kCAAkCC,cAAc;IACzD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,+DAA0B,gBAAgB;IACjE;IACA,SAAQD,SAAS;QACb,OAAO;YACH,WAAWA,UAAU,OAAO,CAACE;QACjC;IACJ;AACJ;AAEO,SAASC;IACZ,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWP;IACjC,OAAOM;AACX"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { AuditLogsListConfig } from "../../../../config/list/index.js";
|
|
3
|
+
import { SystemPromptTab } from "./SystemPromptTab.js";
|
|
4
|
+
import { UserPromptTab } from "./UserPromptTab.js";
|
|
5
|
+
import { LlmResponseTab } from "./LlmResponseTab.js";
|
|
6
|
+
import { hasAfter, isAiGenerateText } from "./shared.js";
|
|
7
|
+
const AiPromptPreviewTabs = ()=>/*#__PURE__*/ react.createElement(AuditLogsListConfig, null, /*#__PURE__*/ react.createElement(AuditLogsListConfig.Details.Tab, {
|
|
8
|
+
name: "systemPrompt",
|
|
9
|
+
label: "System Prompt",
|
|
10
|
+
element: /*#__PURE__*/ react.createElement(SystemPromptTab, null),
|
|
11
|
+
canRender: isAiGenerateText
|
|
12
|
+
}), /*#__PURE__*/ react.createElement(AuditLogsListConfig.Details.Tab, {
|
|
13
|
+
name: "userPrompt",
|
|
14
|
+
label: "User Prompt",
|
|
15
|
+
element: /*#__PURE__*/ react.createElement(UserPromptTab, null),
|
|
16
|
+
canRender: isAiGenerateText
|
|
17
|
+
}), /*#__PURE__*/ react.createElement(AuditLogsListConfig.Details.Tab, {
|
|
18
|
+
name: "llmResponse",
|
|
19
|
+
label: "LLM Response",
|
|
20
|
+
element: /*#__PURE__*/ react.createElement(LlmResponseTab, null),
|
|
21
|
+
canRender: hasAfter
|
|
22
|
+
}));
|
|
23
|
+
export { AiPromptPreviewTabs };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=AiPromptTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views/Logs/Preview/tabs/AiPromptTabs.js","sources":["../../../../../src/views/Logs/Preview/tabs/AiPromptTabs.tsx"],"sourcesContent":["import React from \"react\";\nimport { AuditLogsListConfig } from \"~/config/list/index.js\";\nimport { SystemPromptTab } from \"./SystemPromptTab.js\";\nimport { UserPromptTab } from \"./UserPromptTab.js\";\nimport { LlmResponseTab } from \"./LlmResponseTab.js\";\nimport { isAiGenerateText, hasAfter } from \"./shared.js\";\n\nexport const AiPromptPreviewTabs = () => {\n return (\n <AuditLogsListConfig>\n <AuditLogsListConfig.Details.Tab\n name=\"systemPrompt\"\n label=\"System Prompt\"\n element={<SystemPromptTab />}\n canRender={isAiGenerateText}\n />\n <AuditLogsListConfig.Details.Tab\n name=\"userPrompt\"\n label=\"User Prompt\"\n element={<UserPromptTab />}\n canRender={isAiGenerateText}\n />\n <AuditLogsListConfig.Details.Tab\n name=\"llmResponse\"\n label=\"LLM Response\"\n element={<LlmResponseTab />}\n canRender={hasAfter}\n />\n </AuditLogsListConfig>\n );\n};\n"],"names":["AiPromptPreviewTabs","AuditLogsListConfig","SystemPromptTab","isAiGenerateText","UserPromptTab","LlmResponseTab","hasAfter"],"mappings":";;;;;;AAOO,MAAMA,sBAAsB,IACxB,WAAP,GACI,oBAACC,qBAAmBA,MAAAA,WAAAA,GAChB,oBAACA,oBAAoB,OAAO,CAAC,GAAG;QAC5B,MAAK;QACL,OAAM;QACN,uBAAS,oBAACC,iBAAeA;QACzB,WAAWC;sBAEf,oBAACF,oBAAoB,OAAO,CAAC,GAAG;QAC5B,MAAK;QACL,OAAM;QACN,uBAAS,oBAACG,eAAaA;QACvB,WAAWD;sBAEf,oBAACF,oBAAoB,OAAO,CAAC,GAAG;QAC5B,MAAK;QACL,OAAM;QACN,uBAAS,oBAACI,gBAAcA;QACxB,WAAWC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { CodeEditor } from "@webiny/admin-ui";
|
|
3
|
+
import { createReactiveComponent } from "@webiny/app-admin";
|
|
4
|
+
import { useAuditLogDetailsPresenter } from "../feature.js";
|
|
5
|
+
import { EDITOR_HEIGHT } from "./shared.js";
|
|
6
|
+
const LlmResponseTab = createReactiveComponent(()=>{
|
|
7
|
+
const presenter = useAuditLogDetailsPresenter();
|
|
8
|
+
const after = presenter.vm.content.after;
|
|
9
|
+
if (!after) return /*#__PURE__*/ react.createElement(CodeEditor, {
|
|
10
|
+
language: "markdown",
|
|
11
|
+
value: "(pending — no response yet)",
|
|
12
|
+
height: EDITOR_HEIGHT
|
|
13
|
+
});
|
|
14
|
+
if ("error" === after.status) {
|
|
15
|
+
const errorText = [
|
|
16
|
+
`# Error: ${after.error?.name ?? "Unknown"}`,
|
|
17
|
+
"",
|
|
18
|
+
after.error?.message ?? "No error message available.",
|
|
19
|
+
"",
|
|
20
|
+
null != after.duration ? `Duration: ${after.duration}ms` : ""
|
|
21
|
+
].join("\n");
|
|
22
|
+
return /*#__PURE__*/ react.createElement(CodeEditor, {
|
|
23
|
+
language: "markdown",
|
|
24
|
+
value: errorText,
|
|
25
|
+
height: EDITOR_HEIGHT
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const text = after.text ?? "";
|
|
29
|
+
let formatted = text;
|
|
30
|
+
try {
|
|
31
|
+
formatted = JSON.stringify(JSON.parse(text), null, 2);
|
|
32
|
+
} catch {}
|
|
33
|
+
return /*#__PURE__*/ react.createElement(CodeEditor, {
|
|
34
|
+
language: "json",
|
|
35
|
+
value: formatted,
|
|
36
|
+
height: EDITOR_HEIGHT
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
export { LlmResponseTab };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=LlmResponseTab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views/Logs/Preview/tabs/LlmResponseTab.js","sources":["../../../../../src/views/Logs/Preview/tabs/LlmResponseTab.tsx"],"sourcesContent":["import React from \"react\";\nimport { CodeEditor } from \"@webiny/admin-ui\";\nimport { createReactiveComponent } from \"@webiny/app-admin\";\nimport { useAuditLogDetailsPresenter } from \"~/views/Logs/Preview/feature.js\";\nimport { EDITOR_HEIGHT, type AiAuditPayload } from \"./shared.js\";\n\nexport const LlmResponseTab = createReactiveComponent(() => {\n const presenter = useAuditLogDetailsPresenter();\n const after = presenter.vm.content.after as AiAuditPayload[\"after\"];\n\n if (!after) {\n return (\n <CodeEditor\n language=\"markdown\"\n value=\"(pending — no response yet)\"\n height={EDITOR_HEIGHT}\n />\n );\n }\n\n if (after.status === \"error\") {\n const errorText = [\n `# Error: ${after.error?.name ?? \"Unknown\"}`,\n \"\",\n after.error?.message ?? \"No error message available.\",\n \"\",\n after.duration != null ? `Duration: ${after.duration}ms` : \"\"\n ].join(\"\\n\");\n\n return <CodeEditor language=\"markdown\" value={errorText} height={EDITOR_HEIGHT} />;\n }\n\n const text = after.text ?? \"\";\n let formatted = text;\n try {\n formatted = JSON.stringify(JSON.parse(text), null, 2);\n } catch {\n // not JSON, show as-is\n }\n\n return <CodeEditor language=\"json\" value={formatted} height={EDITOR_HEIGHT} />;\n});\n"],"names":["LlmResponseTab","createReactiveComponent","presenter","useAuditLogDetailsPresenter","after","CodeEditor","EDITOR_HEIGHT","errorText","text","formatted","JSON"],"mappings":";;;;;AAMO,MAAMA,iBAAiBC,wBAAwB;IAClD,MAAMC,YAAYC;IAClB,MAAMC,QAAQF,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK;IAExC,IAAI,CAACE,OACD,OAAO,WAAP,GACI,oBAACC,YAAUA;QACP,UAAS;QACT,OAAM;QACN,QAAQC;;IAKpB,IAAIF,AAAiB,YAAjBA,MAAM,MAAM,EAAc;QAC1B,MAAMG,YAAY;YACd,CAAC,SAAS,EAAEH,MAAM,KAAK,EAAE,QAAQ,WAAW;YAC5C;YACAA,MAAM,KAAK,EAAE,WAAW;YACxB;YACkB,QAAlBA,MAAM,QAAQ,GAAW,CAAC,UAAU,EAAEA,MAAM,QAAQ,CAAC,EAAE,CAAC,GAAG;SAC9D,CAAC,IAAI,CAAC;QAEP,OAAO,WAAP,GAAO,oBAACC,YAAUA;YAAC,UAAS;YAAW,OAAOE;YAAW,QAAQD;;IACrE;IAEA,MAAME,OAAOJ,MAAM,IAAI,IAAI;IAC3B,IAAIK,YAAYD;IAChB,IAAI;QACAC,YAAYC,KAAK,SAAS,CAACA,KAAK,KAAK,CAACF,OAAO,MAAM;IACvD,EAAE,OAAM,CAER;IAEA,OAAO,WAAP,GAAO,oBAACH,YAAUA;QAAC,UAAS;QAAO,OAAOI;QAAW,QAAQH;;AACjE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { CodeEditor } from "@webiny/admin-ui";
|
|
3
|
+
import { createReactiveComponent } from "@webiny/app-admin";
|
|
4
|
+
import { useAuditLogDetailsPresenter } from "../feature.js";
|
|
5
|
+
import { EDITOR_HEIGHT } from "./shared.js";
|
|
6
|
+
function extractSystemPrompt(content) {
|
|
7
|
+
const before = content.before;
|
|
8
|
+
const system = before?.system;
|
|
9
|
+
if ("string" == typeof system) return system;
|
|
10
|
+
if (system && "string" == typeof system.content) return system.content;
|
|
11
|
+
return "";
|
|
12
|
+
}
|
|
13
|
+
const SystemPromptTab = createReactiveComponent(()=>{
|
|
14
|
+
const presenter = useAuditLogDetailsPresenter();
|
|
15
|
+
const text = extractSystemPrompt(presenter.vm.content);
|
|
16
|
+
return /*#__PURE__*/ react.createElement(CodeEditor, {
|
|
17
|
+
language: "markdown",
|
|
18
|
+
value: text || "(empty)",
|
|
19
|
+
height: EDITOR_HEIGHT
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
export { SystemPromptTab };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=SystemPromptTab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views/Logs/Preview/tabs/SystemPromptTab.js","sources":["../../../../../src/views/Logs/Preview/tabs/SystemPromptTab.tsx"],"sourcesContent":["import React from \"react\";\nimport { CodeEditor } from \"@webiny/admin-ui\";\nimport { createReactiveComponent } from \"@webiny/app-admin\";\nimport { useAuditLogDetailsPresenter } from \"~/views/Logs/Preview/feature.js\";\nimport { EDITOR_HEIGHT, type AiAuditPayload } from \"./shared.js\";\n\nfunction extractSystemPrompt(content: Record<string, unknown>): string {\n const before = content.before as AiAuditPayload[\"before\"];\n const system = before?.system;\n if (typeof system === \"string\") {\n return system;\n }\n if (system && typeof system.content === \"string\") {\n return system.content;\n }\n return \"\";\n}\n\nexport const SystemPromptTab = createReactiveComponent(() => {\n const presenter = useAuditLogDetailsPresenter();\n const text = extractSystemPrompt(presenter.vm.content);\n return <CodeEditor language=\"markdown\" value={text || \"(empty)\"} height={EDITOR_HEIGHT} />;\n});\n"],"names":["extractSystemPrompt","content","before","system","SystemPromptTab","createReactiveComponent","presenter","useAuditLogDetailsPresenter","text","CodeEditor","EDITOR_HEIGHT"],"mappings":";;;;;AAMA,SAASA,oBAAoBC,OAAgC;IACzD,MAAMC,SAASD,QAAQ,MAAM;IAC7B,MAAME,SAASD,QAAQ;IACvB,IAAI,AAAkB,YAAlB,OAAOC,QACP,OAAOA;IAEX,IAAIA,UAAU,AAA0B,YAA1B,OAAOA,OAAO,OAAO,EAC/B,OAAOA,OAAO,OAAO;IAEzB,OAAO;AACX;AAEO,MAAMC,kBAAkBC,wBAAwB;IACnD,MAAMC,YAAYC;IAClB,MAAMC,OAAOR,oBAAoBM,UAAU,EAAE,CAAC,OAAO;IACrD,OAAO,WAAP,GAAO,oBAACG,YAAUA;QAAC,UAAS;QAAW,OAAOD,QAAQ;QAAW,QAAQE;;AAC7E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { CodeEditor } from "@webiny/admin-ui";
|
|
3
|
+
import { createReactiveComponent } from "@webiny/app-admin";
|
|
4
|
+
import { useAuditLogDetailsPresenter } from "../feature.js";
|
|
5
|
+
import { EDITOR_HEIGHT } from "./shared.js";
|
|
6
|
+
const UserPromptTab = createReactiveComponent(()=>{
|
|
7
|
+
const presenter = useAuditLogDetailsPresenter();
|
|
8
|
+
const before = presenter.vm.content.before;
|
|
9
|
+
const text = before?.prompt ?? "";
|
|
10
|
+
return /*#__PURE__*/ react.createElement(CodeEditor, {
|
|
11
|
+
language: "markdown",
|
|
12
|
+
value: text || "(empty)",
|
|
13
|
+
height: EDITOR_HEIGHT
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
export { UserPromptTab };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=UserPromptTab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views/Logs/Preview/tabs/UserPromptTab.js","sources":["../../../../../src/views/Logs/Preview/tabs/UserPromptTab.tsx"],"sourcesContent":["import React from \"react\";\nimport { CodeEditor } from \"@webiny/admin-ui\";\nimport { createReactiveComponent } from \"@webiny/app-admin\";\nimport { useAuditLogDetailsPresenter } from \"~/views/Logs/Preview/feature.js\";\nimport { EDITOR_HEIGHT, type AiAuditPayload } from \"./shared.js\";\n\nexport const UserPromptTab = createReactiveComponent(() => {\n const presenter = useAuditLogDetailsPresenter();\n const before = presenter.vm.content.before as AiAuditPayload[\"before\"];\n const text = before?.prompt ?? \"\";\n return <CodeEditor language=\"markdown\" value={text || \"(empty)\"} height={EDITOR_HEIGHT} />;\n});\n"],"names":["UserPromptTab","createReactiveComponent","presenter","useAuditLogDetailsPresenter","before","text","CodeEditor","EDITOR_HEIGHT"],"mappings":";;;;;AAMO,MAAMA,gBAAgBC,wBAAwB;IACjD,MAAMC,YAAYC;IAClB,MAAMC,SAASF,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM;IAC1C,MAAMG,OAAOD,QAAQ,UAAU;IAC/B,OAAO,WAAP,GAAO,oBAACE,YAAUA;QAAC,UAAS;QAAW,OAAOD,QAAQ;QAAW,QAAQE;;AAC7E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { IAuditLog } from "../../../../types.js";
|
|
2
|
+
export declare const EDITOR_HEIGHT = "calc(100vh - 350px)";
|
|
3
|
+
export interface AiAuditPayload {
|
|
4
|
+
before?: {
|
|
5
|
+
model?: string;
|
|
6
|
+
system?: string | {
|
|
7
|
+
content?: string;
|
|
8
|
+
role?: string;
|
|
9
|
+
};
|
|
10
|
+
prompt?: string;
|
|
11
|
+
tools?: string[];
|
|
12
|
+
};
|
|
13
|
+
after?: {
|
|
14
|
+
status?: "success" | "error";
|
|
15
|
+
duration?: number;
|
|
16
|
+
text?: string;
|
|
17
|
+
usage?: unknown;
|
|
18
|
+
finishReason?: string;
|
|
19
|
+
steps?: number;
|
|
20
|
+
toolCalls?: number;
|
|
21
|
+
error?: {
|
|
22
|
+
message?: string;
|
|
23
|
+
name?: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export declare function isAiGenerateText(auditLog: IAuditLog): boolean;
|
|
28
|
+
export declare function hasAfter(auditLog: IAuditLog): boolean;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const EDITOR_HEIGHT = "calc(100vh - 350px)";
|
|
2
|
+
function isAiGenerateText(auditLog) {
|
|
3
|
+
return "AI" === auditLog.app && "TEXT" === auditLog.entity.value;
|
|
4
|
+
}
|
|
5
|
+
function hasAfter(auditLog) {
|
|
6
|
+
if (!isAiGenerateText(auditLog)) return false;
|
|
7
|
+
try {
|
|
8
|
+
const content = JSON.parse(auditLog.content);
|
|
9
|
+
return !!content.after;
|
|
10
|
+
} catch {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export { EDITOR_HEIGHT, hasAfter, isAiGenerateText };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views/Logs/Preview/tabs/shared.js","sources":["../../../../../src/views/Logs/Preview/tabs/shared.ts"],"sourcesContent":["import type { IAuditLog } from \"~/types.js\";\n\nexport const EDITOR_HEIGHT = \"calc(100vh - 350px)\";\n\nexport interface AiAuditPayload {\n before?: {\n model?: string;\n system?: string | { content?: string; role?: string };\n prompt?: string;\n tools?: string[];\n };\n after?: {\n status?: \"success\" | \"error\";\n duration?: number;\n text?: string;\n usage?: unknown;\n finishReason?: string;\n steps?: number;\n toolCalls?: number;\n error?: { message?: string; name?: string };\n };\n}\n\nexport function isAiGenerateText(auditLog: IAuditLog): boolean {\n return auditLog.app === \"AI\" && auditLog.entity.value === \"TEXT\";\n}\n\nexport function hasAfter(auditLog: IAuditLog): boolean {\n if (!isAiGenerateText(auditLog)) {\n return false;\n }\n try {\n const content = JSON.parse(auditLog.content);\n return !!content.after;\n } catch {\n return false;\n }\n}\n"],"names":["EDITOR_HEIGHT","isAiGenerateText","auditLog","hasAfter","content","JSON"],"mappings":"AAEO,MAAMA,gBAAgB;AAqBtB,SAASC,iBAAiBC,QAAmB;IAChD,OAAOA,AAAiB,SAAjBA,SAAS,GAAG,IAAaA,AAA0B,WAA1BA,SAAS,MAAM,CAAC,KAAK;AACzD;AAEO,SAASC,SAASD,QAAmB;IACxC,IAAI,CAACD,iBAAiBC,WAClB,OAAO;IAEX,IAAI;QACA,MAAME,UAAUC,KAAK,KAAK,CAACH,SAAS,OAAO;QAC3C,OAAO,CAAC,CAACE,QAAQ,KAAK;IAC1B,EAAE,OAAM;QACJ,OAAO;IACX;AACJ"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type DataTableSorting, type OnDataTableSortingChange } from "@webiny/admin-ui";
|
|
3
|
+
import type { IAuditLog } from "../../../types.js";
|
|
4
|
+
interface ActionProps {
|
|
5
|
+
label: string;
|
|
6
|
+
value: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const Action: ({ label, value }: ActionProps) => React.JSX.Element;
|
|
9
|
+
export interface TableProps {
|
|
10
|
+
records: IAuditLog[];
|
|
11
|
+
loading?: boolean;
|
|
12
|
+
handleRecordSelect: (auditLog: IAuditLog) => void;
|
|
13
|
+
sorting: DataTableSorting;
|
|
14
|
+
onSortingChange: OnDataTableSortingChange;
|
|
15
|
+
hasAccessToUsers: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface EntryWithPreview extends IAuditLog {
|
|
18
|
+
preview?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare const Table: React.ForwardRefExoticComponent<TableProps & React.RefAttributes<HTMLDivElement>>;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import react, { forwardRef, useMemo } from "react";
|
|
2
|
+
import { addMinutes, format } from "date-fns";
|
|
3
|
+
import { ReactComponent } from "@webiny/icons/search.svg";
|
|
4
|
+
import { Button, DataTable, Tooltip } from "@webiny/admin-ui";
|
|
5
|
+
import { Text } from "../../../components/Text.js";
|
|
6
|
+
import { getActionColorClasses } from "./styled.js";
|
|
7
|
+
const Action = ({ label, value })=>/*#__PURE__*/ react.createElement("div", {
|
|
8
|
+
className: `px-sm w-fit border border-solid rounded-[5px] ${getActionColorClasses(value)}`
|
|
9
|
+
}, /*#__PURE__*/ react.createElement(Text, {
|
|
10
|
+
use: "subtitle1"
|
|
11
|
+
}, label));
|
|
12
|
+
const Table = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
13
|
+
const { records, loading, handleRecordSelect, sorting, onSortingChange, hasAccessToUsers } = props;
|
|
14
|
+
const columns = {
|
|
15
|
+
createdOn: {
|
|
16
|
+
header: "Timestamp",
|
|
17
|
+
cell: (row)=>{
|
|
18
|
+
const date = new Date(row.createdOn);
|
|
19
|
+
return /*#__PURE__*/ react.createElement(Tooltip, {
|
|
20
|
+
side: "right",
|
|
21
|
+
content: `UTC: ${format(addMinutes(date, date.getTimezoneOffset()), "yyyy-MM-dd HH:mm:ss")}`,
|
|
22
|
+
trigger: /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Text, {
|
|
23
|
+
use: "subtitle1"
|
|
24
|
+
}, format(date, "yyyy-MM-dd HH:mm:ss")), /*#__PURE__*/ react.createElement("span", {
|
|
25
|
+
className: "px-xs text-neutral-dimmed"
|
|
26
|
+
}, /*#__PURE__*/ react.createElement(Text, {
|
|
27
|
+
use: "body2"
|
|
28
|
+
}, format(date, "(O)"))))
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
enableSorting: true
|
|
32
|
+
},
|
|
33
|
+
app: {
|
|
34
|
+
header: "App/Entity",
|
|
35
|
+
cell: (row)=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Text, {
|
|
36
|
+
use: "subtitle1",
|
|
37
|
+
className: "text-neutral-strong"
|
|
38
|
+
}, row.app), row.entity && /*#__PURE__*/ react.createElement(react.Fragment, null, "\xa0/\xa0", /*#__PURE__*/ react.createElement("span", {
|
|
39
|
+
className: "text-neutral-strong"
|
|
40
|
+
}, /*#__PURE__*/ react.createElement(Text, {
|
|
41
|
+
use: "body2"
|
|
42
|
+
}, row.entity.label))), /*#__PURE__*/ react.createElement("br", null), /*#__PURE__*/ react.createElement("span", {
|
|
43
|
+
className: "text-neutral-dimmed"
|
|
44
|
+
}, /*#__PURE__*/ react.createElement(Text, {
|
|
45
|
+
use: "body2"
|
|
46
|
+
}, "ID: "), row.entity.link ? /*#__PURE__*/ react.createElement("a", {
|
|
47
|
+
href: row.entity.link,
|
|
48
|
+
target: "blank"
|
|
49
|
+
}, /*#__PURE__*/ react.createElement(Text, {
|
|
50
|
+
use: "body2"
|
|
51
|
+
}, row.entityId)) : /*#__PURE__*/ react.createElement(Text, {
|
|
52
|
+
use: "body2"
|
|
53
|
+
}, row.entityId))),
|
|
54
|
+
className: "!w-[280px]"
|
|
55
|
+
},
|
|
56
|
+
action: {
|
|
57
|
+
header: "Action",
|
|
58
|
+
cell: (row)=>/*#__PURE__*/ react.createElement(Action, {
|
|
59
|
+
label: row.action.label,
|
|
60
|
+
value: row.action.value
|
|
61
|
+
})
|
|
62
|
+
},
|
|
63
|
+
message: {
|
|
64
|
+
header: "Message",
|
|
65
|
+
cell: (row)=>/*#__PURE__*/ react.createElement(Text, {
|
|
66
|
+
use: "subtitle1"
|
|
67
|
+
}, row.message),
|
|
68
|
+
className: "!w-auto"
|
|
69
|
+
},
|
|
70
|
+
...hasAccessToUsers && {
|
|
71
|
+
createdBy: {
|
|
72
|
+
header: "Initiator",
|
|
73
|
+
cell: (row)=>/*#__PURE__*/ react.createElement("a", {
|
|
74
|
+
href: `/admin-users?id=${row.createdBy.id}`,
|
|
75
|
+
target: "blank"
|
|
76
|
+
}, /*#__PURE__*/ react.createElement(Text, {
|
|
77
|
+
use: "subtitle1"
|
|
78
|
+
}, row.createdBy.displayName || "-"))
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
preview: {
|
|
82
|
+
header: "",
|
|
83
|
+
cell: (auditLog)=>/*#__PURE__*/ react.createElement(Button, {
|
|
84
|
+
variant: "secondary",
|
|
85
|
+
onClick: ()=>handleRecordSelect(auditLog),
|
|
86
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
87
|
+
text: "Details"
|
|
88
|
+
}),
|
|
89
|
+
className: "!w-[100px]"
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
const tableSorting = useMemo(()=>{
|
|
93
|
+
if (!Array.isArray(sorting) || 0 === sorting.length) return [
|
|
94
|
+
{
|
|
95
|
+
id: "savedOn",
|
|
96
|
+
desc: true
|
|
97
|
+
}
|
|
98
|
+
];
|
|
99
|
+
return sorting;
|
|
100
|
+
}, [
|
|
101
|
+
sorting
|
|
102
|
+
]);
|
|
103
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
104
|
+
ref: ref
|
|
105
|
+
}, /*#__PURE__*/ react.createElement(DataTable, {
|
|
106
|
+
columns: columns,
|
|
107
|
+
data: records,
|
|
108
|
+
loading: loading,
|
|
109
|
+
stickyHeader: true,
|
|
110
|
+
sorting: tableSorting,
|
|
111
|
+
onSortingChange: onSortingChange
|
|
112
|
+
}));
|
|
113
|
+
});
|
|
114
|
+
Table.displayName = "Table";
|
|
115
|
+
export { Action, Table };
|
|
116
|
+
|
|
117
|
+
//# sourceMappingURL=Table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views/Logs/Table/Table.js","sources":["../../../../src/views/Logs/Table/Table.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from \"react\";\nimport { addMinutes, format } from \"date-fns\";\nimport { ReactComponent as PreviewIcon } from \"@webiny/icons/search.svg\";\nimport {\n Button,\n type DataTableColumns,\n type DataTableSorting,\n type OnDataTableSortingChange\n} from \"@webiny/admin-ui\";\nimport { DataTable, Tooltip } from \"@webiny/admin-ui\";\n\nimport { Text } from \"~/components/Text.js\";\nimport { getActionColorClasses } from \"./styled.js\";\nimport type { IAuditLog } from \"~/types.js\";\n\ninterface ActionProps {\n label: string;\n value: string;\n}\n\nexport const Action = ({ label, value }: ActionProps) => {\n return (\n <div\n className={`px-sm w-fit border border-solid rounded-[5px] ${getActionColorClasses(value)}`}\n >\n <Text use={\"subtitle1\"}>{label}</Text>\n </div>\n );\n};\n\nexport interface TableProps {\n records: IAuditLog[];\n loading?: boolean;\n handleRecordSelect: (auditLog: IAuditLog) => void;\n sorting: DataTableSorting;\n onSortingChange: OnDataTableSortingChange;\n hasAccessToUsers: boolean;\n}\n\nexport interface EntryWithPreview extends IAuditLog {\n preview?: string;\n}\n\nexport const Table = forwardRef<HTMLDivElement, TableProps>((props, ref) => {\n const { records, loading, handleRecordSelect, sorting, onSortingChange, hasAccessToUsers } =\n props;\n\n const columns: DataTableColumns<EntryWithPreview> = {\n createdOn: {\n header: \"Timestamp\",\n cell: (row: EntryWithPreview) => {\n const date = new Date(row.createdOn);\n\n return (\n <Tooltip\n side=\"right\"\n content={`UTC: ${format(\n addMinutes(date, date.getTimezoneOffset()),\n \"yyyy-MM-dd HH:mm:ss\"\n )}`}\n trigger={\n <>\n <Text use={\"subtitle1\"}>{format(date, \"yyyy-MM-dd HH:mm:ss\")}</Text>\n <span className={\"px-xs text-neutral-dimmed\"}>\n <Text use={\"body2\"}>{format(date, \"(O)\")}</Text>\n </span>\n </>\n }\n />\n );\n },\n enableSorting: true\n },\n app: {\n header: \"App/Entity\",\n cell: (row: EntryWithPreview) => (\n <>\n <Text use={\"subtitle1\"} className={\"text-neutral-strong\"}>\n {row.app}\n </Text>\n {row.entity && (\n <>\n / \n <span className={\"text-neutral-strong\"}>\n <Text use={\"body2\"}>{row.entity.label}</Text>\n </span>\n </>\n )}\n <br />\n <span className={\"text-neutral-dimmed\"}>\n <Text use={\"body2\"}>{`ID: `}</Text>\n {row.entity.link ? (\n <a href={row.entity.link} target={\"blank\"}>\n <Text use={\"body2\"}>{row.entityId}</Text>\n </a>\n ) : (\n <Text use={\"body2\"}>{row.entityId}</Text>\n )}\n </span>\n </>\n ),\n className: \"!w-[280px]\"\n },\n action: {\n header: \"Action\",\n cell: (row: EntryWithPreview) => (\n <Action label={row.action.label} value={row.action.value} />\n )\n },\n message: {\n header: \"Message\",\n cell: (row: EntryWithPreview) => <Text use={\"subtitle1\"}>{row.message}</Text>,\n className: \"!w-auto\"\n },\n ...(hasAccessToUsers && {\n createdBy: {\n header: \"Initiator\",\n cell: (row: EntryWithPreview) => (\n <a href={`/admin-users?id=${row.createdBy.id}`} target={\"blank\"}>\n <Text use={\"subtitle1\"}>{row.createdBy.displayName || \"-\"}</Text>\n </a>\n )\n }\n }),\n preview: {\n header: \"\",\n cell: (auditLog: EntryWithPreview) => (\n <Button\n variant={\"secondary\"}\n onClick={() => handleRecordSelect(auditLog)}\n icon={<PreviewIcon />}\n text={\"Details\"}\n />\n ),\n className: \"!w-[100px]\"\n }\n };\n\n const tableSorting = useMemo(() => {\n if (!Array.isArray(sorting) || sorting.length === 0) {\n return [\n {\n id: \"savedOn\",\n desc: true\n }\n ];\n }\n\n return sorting;\n }, [sorting]);\n\n return (\n <div ref={ref}>\n <DataTable\n columns={columns}\n data={records}\n loading={loading}\n stickyHeader={true}\n sorting={tableSorting}\n onSortingChange={onSortingChange}\n />\n </div>\n );\n});\n\nTable.displayName = \"Table\";\n"],"names":["Action","label","value","getActionColorClasses","Text","Table","forwardRef","props","ref","records","loading","handleRecordSelect","sorting","onSortingChange","hasAccessToUsers","columns","row","date","Date","Tooltip","format","addMinutes","auditLog","Button","PreviewIcon","tableSorting","useMemo","Array","DataTable"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Table.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Table.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getActionColorClasses(value: string): string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ActionType } from "@webiny/common-audit-logs";
|
|
2
|
+
const YELLOW_ACTIONS = [
|
|
3
|
+
ActionType.UPDATE
|
|
4
|
+
];
|
|
5
|
+
const RED_ACTIONS = [
|
|
6
|
+
ActionType.DELETE,
|
|
7
|
+
ActionType.UNPUBLISH,
|
|
8
|
+
ActionType.MOVE_TO_TRASH
|
|
9
|
+
];
|
|
10
|
+
function getActionColorClasses(value) {
|
|
11
|
+
if (YELLOW_ACTIONS.includes(value)) return "bg-warning-100 border-warning-500 text-warning-700";
|
|
12
|
+
if (RED_ACTIONS.includes(value)) return "bg-destructive-100 border-destructive-500 text-destructive-700";
|
|
13
|
+
return "bg-success-100 border-success-500 text-success-700";
|
|
14
|
+
}
|
|
15
|
+
export { getActionColorClasses };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=styled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views/Logs/Table/styled.js","sources":["../../../../src/views/Logs/Table/styled.tsx"],"sourcesContent":["import { ActionType } from \"@webiny/common-audit-logs\";\n\nconst YELLOW_ACTIONS: string[] = [ActionType.UPDATE];\nconst RED_ACTIONS: string[] = [ActionType.DELETE, ActionType.UNPUBLISH, ActionType.MOVE_TO_TRASH];\n\nexport function getActionColorClasses(value: string): string {\n if (YELLOW_ACTIONS.includes(value)) {\n return \"bg-warning-100 border-warning-500 text-warning-700\";\n }\n if (RED_ACTIONS.includes(value)) {\n return \"bg-destructive-100 border-destructive-500 text-destructive-700\";\n }\n return \"bg-success-100 border-success-500 text-success-700\";\n}\n"],"names":["YELLOW_ACTIONS","ActionType","RED_ACTIONS","getActionColorClasses","value"],"mappings":";AAEA,MAAMA,iBAA2B;IAACC,WAAW,MAAM;CAAC;AACpD,MAAMC,cAAwB;IAACD,WAAW,MAAM;IAAEA,WAAW,SAAS;IAAEA,WAAW,aAAa;CAAC;AAE1F,SAASE,sBAAsBC,KAAa;IAC/C,IAAIJ,eAAe,QAAQ,CAACI,QACxB,OAAO;IAEX,IAAIF,YAAY,QAAQ,CAACE,QACrB,OAAO;IAEX,OAAO;AACX"}
|