@flamingo-stack/openframe-frontend-core 0.0.850 → 0.0.852
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/build/export-map.json +1 -1
- package/dist/{case-study-card-X2HKPKT7.cjs → case-study-card-WP5Z234Q.cjs} +5 -5
- package/dist/chat-protocol/events.d.ts +4 -1
- package/dist/chat-protocol/events.d.ts.map +1 -1
- package/dist/chat-protocol/index.cjs +90 -40
- package/dist/chat-protocol/nats-decoder.d.ts.map +1 -1
- package/dist/chat-protocol/nats-decoder.js +5 -1
- package/dist/chat-protocol/policy-review.d.ts +18 -0
- package/dist/chat-protocol/policy-review.d.ts.map +1 -0
- package/dist/chat-protocol/policy-review.js +55 -0
- package/dist/{chunk-BU2PSRAS.cjs → chunk-2W22LY3W.cjs} +11 -11
- package/dist/{chunk-ZDSC3GFX.cjs → chunk-3SJVF3HW.cjs} +6 -6
- package/dist/{chunk-GAYLAA3L.cjs → chunk-3ZQESOPJ.cjs} +79 -79
- package/dist/{chunk-IPGGSFR7.cjs → chunk-477P6AQH.cjs} +6 -6
- package/dist/{chunk-5CBI2ZYV.cjs → chunk-5RMBLOJ5.cjs} +12 -12
- package/dist/{chunk-36DUCHI7.cjs → chunk-6GWRPW6B.cjs} +4 -4
- package/dist/{chunk-SOSIXRQ3.cjs → chunk-AZEO7HBB.cjs} +2 -2
- package/dist/{chunk-FRG724DU.cjs → chunk-BNHTBLAG.cjs} +17 -17
- package/dist/{chunk-VRWBJL7B.cjs → chunk-CHGIACIP.cjs} +91 -91
- package/dist/{chunk-CAGNWDVJ.cjs → chunk-COJG2ATY.cjs} +45 -45
- package/dist/{chunk-XKOL5CNU.cjs → chunk-D3H6AI7O.cjs} +956 -1077
- package/dist/{chunk-ALRYVZ3E.cjs → chunk-DLTPSP5F.cjs} +2 -2
- package/dist/{chunk-3W4ASAXN.cjs → chunk-EIACEY2L.cjs} +4 -4
- package/dist/{chunk-TIVPOVIM.cjs → chunk-ETZFBB7O.cjs} +2 -2
- package/dist/{chunk-GRCOEICK.cjs → chunk-G7GF4PWA.cjs} +6 -6
- package/dist/{chunk-7ICHJVAT.cjs → chunk-GEZ3UXCA.cjs} +25 -25
- package/dist/chunk-GGUFVIJ6.cjs +28 -0
- package/dist/{chunk-ZGEWT3SF.cjs → chunk-HXURNKXI.cjs} +3 -3
- package/dist/{chunk-TX4NTH22.cjs → chunk-IC4IJJB2.cjs} +102 -102
- package/dist/{chunk-BUEEQD3G.cjs → chunk-IGVAPIEW.cjs} +2 -2
- package/dist/{chunk-IG6ROHPS.cjs → chunk-IO6NN3SL.cjs} +54 -54
- package/dist/{chunk-5PIR77V5.cjs → chunk-KHOB3TES.cjs} +4 -4
- package/dist/{chunk-JQCQCE6U.cjs → chunk-KKFDRCQF.cjs} +2 -2
- package/dist/{chunk-6AJYGXXS.cjs → chunk-KNN2GCMW.cjs} +21 -21
- package/dist/{chunk-YJZ7R3W5.cjs → chunk-KXFIYO4O.cjs} +8 -8
- package/dist/{chunk-FXLROQUT.cjs → chunk-LFEURIZN.cjs} +590 -607
- package/dist/{chunk-JWIITCVB.cjs → chunk-MFDRCTM3.cjs} +47 -47
- package/dist/{chunk-OHHDX3Z4.cjs → chunk-MXY2OGEV.cjs} +42 -42
- package/dist/{chunk-533QK4R6.cjs → chunk-NMWLXHFH.cjs} +130 -130
- package/dist/{chunk-MDLT6D46.cjs → chunk-O3EKOXFZ.cjs} +20 -20
- package/dist/{chunk-HLJXCOMA.cjs → chunk-OH5TXFRR.cjs} +4 -4
- package/dist/{chunk-SA2NNWIJ.cjs → chunk-P63CRPWI.cjs} +19 -64
- package/dist/{chunk-R5JPZ6TY.cjs → chunk-QOW2GP3V.cjs} +21 -21
- package/dist/{chunk-JBTH3O2C.cjs → chunk-SSKMGH5O.cjs} +4 -4
- package/dist/{chunk-4YBS4HIO.cjs → chunk-U767P4JU.cjs} +455 -38
- package/dist/{chunk-FNQWL4W4.cjs → chunk-UO2EJGRJ.cjs} +45 -45
- package/dist/{chunk-IHY7E4EX.cjs → chunk-USPUZO53.cjs} +4 -4
- package/dist/{chunk-IN3LA2FU.cjs → chunk-UV45EPXN.cjs} +2 -2
- package/dist/{chunk-S3QXLD4X.cjs → chunk-VCFQHPOO.cjs} +37 -3
- package/dist/{chunk-2QZUTNL3.cjs → chunk-VUHHLRAY.cjs} +92 -92
- package/dist/{chunk-QJER2ZNA.cjs → chunk-WFAZMASF.cjs} +3 -3
- package/dist/{chunk-LGYPCUHO.cjs → chunk-X3WIOMEE.cjs} +36 -36
- package/dist/{cloud-tenants-TVB3DT3J.cjs → cloud-tenants-O33HCUYB.cjs} +50 -50
- package/dist/components/case-studies/index.cjs +69 -69
- package/dist/components/chat/approval-batch-message.d.ts +5 -0
- package/dist/components/chat/approval-batch-message.d.ts.map +1 -1
- package/dist/components/chat/approval-batch-message.js +36 -10
- package/dist/components/chat/index.cjs +45 -45
- package/dist/components/chat/policy-review.d.ts +27 -0
- package/dist/components/chat/policy-review.d.ts.map +1 -0
- package/dist/components/chat/policy-review.js +67 -0
- package/dist/components/chat/stream/message-mutations.d.ts.map +1 -1
- package/dist/components/chat/stream/message-mutations.js +4 -1
- package/dist/components/chat/tool-execution-display.d.ts.map +1 -1
- package/dist/components/chat/tool-execution-display.js +16 -5
- package/dist/components/chat/types/message.types.d.ts +40 -2
- package/dist/components/chat/types/message.types.d.ts.map +1 -1
- package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
- package/dist/components/chat/utils/extract-incomplete-message-state.js +2 -0
- package/dist/components/chat/utils/message-segment-accumulator.d.ts.map +1 -1
- package/dist/components/chat/utils/message-segment-accumulator.js +3 -0
- package/dist/components/chat/utils/process-historical-messages.d.ts +2 -2
- package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
- package/dist/components/chat/utils/process-historical-messages.js +7 -1
- package/dist/components/contact/index.cjs +51 -51
- package/dist/components/docs/index.cjs +54 -54
- package/dist/components/embeds/index.cjs +51 -51
- package/dist/components/faq/index.cjs +52 -52
- package/dist/components/features/approval-level.d.ts +6 -12
- package/dist/components/features/approval-level.d.ts.map +1 -1
- package/dist/components/features/approval-level.js +45 -55
- package/dist/components/features/index.cjs +55 -54
- package/dist/components/features/notifications/approval-request-notification-tile.d.ts.map +1 -1
- package/dist/components/features/notifications/approval-request-notification-tile.js +71 -48
- package/dist/components/features/notifications/types.d.ts +2 -0
- package/dist/components/features/notifications/types.d.ts.map +1 -1
- package/dist/components/features/notifications/types.js +3 -1
- package/dist/components/features/policy-configuration-panel.d.ts.map +1 -1
- package/dist/components/features/policy-configuration-panel.js +75 -64
- package/dist/components/help-center-pages/index.cjs +156 -156
- package/dist/components/icons-v2-generated/brand-logos/index.d.ts +1 -0
- package/dist/components/icons-v2-generated/brand-logos/index.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/index.js +2 -0
- package/dist/components/icons-v2-generated/brand-logos/stripe-icon.d.ts +8 -0
- package/dist/components/icons-v2-generated/brand-logos/stripe-icon.d.ts.map +1 -0
- package/dist/components/icons-v2-generated/brand-logos/stripe-icon.js +24 -0
- package/dist/components/icons-v2-generated/icon-loaders.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/icon-loaders.js +1 -0
- package/dist/components/icons-v2-generated/icon-names.js +1 -1
- package/dist/components/icons-v2-generated/index.cjs +33 -29
- package/dist/components/index.cjs +122 -123
- package/dist/components/meeting-scheduler/index.cjs +113 -112
- package/dist/components/navigation/index.cjs +54 -54
- package/dist/components/onboarding-guides/index.cjs +53 -53
- package/dist/components/product-demo/index.cjs +61 -61
- package/dist/components/related-content/index.cjs +9 -9
- package/dist/components/tickets/index.cjs +57 -57
- package/dist/components/ui/file-manager/index.cjs +8 -9
- package/dist/components/ui/index.cjs +55 -56
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/radio-group.js +8 -2
- package/dist/components/ui/tab-selector.d.ts +7 -1
- package/dist/components/ui/tab-selector.d.ts.map +1 -1
- package/dist/components/ui/tab-selector.js +22 -3
- package/dist/{devices-NGCTSXIU.cjs → devices-2RGGMC2B.cjs} +51 -51
- package/dist/{embeddable-chat-322NDFP5.cjs → embeddable-chat-SJEEJI4N.cjs} +122 -122
- package/dist/hooks/index.cjs +9 -9
- package/dist/{icon-loaders-SUPEKMBJ.cjs → icon-loaders-CTH6E7OP.cjs} +1 -0
- package/dist/index.cjs +61 -62
- package/dist/{knowledge-75PO5DYS.cjs → knowledge-5TJIXVMD.cjs} +52 -52
- package/dist/{logs-PZESOAIG.cjs → logs-HGQOTRKZ.cjs} +57 -57
- package/dist/{policies-6XNMBFWO.cjs → policies-GWFSLVSM.cjs} +54 -54
- package/dist/{remote-session-Q2FIBCGT.cjs → remote-session-SG44CNOK.cjs} +36 -36
- package/dist/{scripts-B3JW6TPF.cjs → scripts-PGJNAZF4.cjs} +57 -57
- package/dist/{software-update-NWP542J7.cjs → software-update-KKLSYHDI.cjs} +54 -54
- package/dist/stripe-icon-YKVABTNI.cjs +7 -0
- package/dist/{tickets-board-7FLGQEHF.cjs → tickets-board-SQY2Y6QV.cjs} +39 -38
- package/dist/utils/index.cjs +32 -1
- package/package.json +1 -1
- package/src/chat-protocol/events.ts +4 -1
- package/src/chat-protocol/nats-decoder.ts +4 -0
- package/src/chat-protocol/policy-review.ts +71 -0
- package/src/components/chat/approval-batch-message.tsx +47 -10
- package/src/components/chat/policy-review.tsx +90 -0
- package/src/components/chat/stream/message-mutations.ts +4 -0
- package/src/components/chat/tool-execution-display.tsx +23 -4
- package/src/components/chat/types/message.types.ts +42 -2
- package/src/components/chat/utils/extract-incomplete-message-state.ts +2 -0
- package/src/components/chat/utils/message-segment-accumulator.ts +3 -0
- package/src/components/chat/utils/process-historical-messages.ts +14 -3
- package/src/components/features/approval-level.tsx +74 -78
- package/src/components/features/notifications/approval-request-notification-tile.tsx +75 -50
- package/src/components/features/notifications/types.ts +4 -0
- package/src/components/features/policy-configuration-panel.tsx +100 -83
- package/src/components/icons-v2/icon-colors.json +3 -0
- package/src/components/icons-v2-generated/brand-logos/index.ts +1 -0
- package/src/components/icons-v2-generated/brand-logos/stripe-icon.tsx +27 -0
- package/src/components/icons-v2-generated/icon-loaders.ts +1 -0
- package/src/components/icons-v2-generated/icon-names.ts +1 -1
- package/src/components/ui/radio-group.tsx +20 -2
- package/src/components/ui/tab-selector.tsx +26 -3
- package/src/styles/ods-colors.css +1 -0
- package/dist/chunk-N3MBQRCQ.cjs +0 -41
- /package/dist/{chunk-46547WQW.cjs → chunk-7HH4Y27U.cjs} +0 -0
|
@@ -60,6 +60,8 @@ export interface ApprovalToolCallMeta {
|
|
|
60
60
|
requiresApproval?: boolean;
|
|
61
61
|
approvalType?: string | null;
|
|
62
62
|
toolCallArguments?: Record<string, unknown> | null;
|
|
63
|
+
/** The guardrail review, as the wire sends it: normalized into the batch by `approvalMetaToBatchData`. */
|
|
64
|
+
policyReview?: unknown;
|
|
63
65
|
}
|
|
64
66
|
/** Approval payload stashed in `notification.meta` for an approval-request notification. */
|
|
65
67
|
export interface ApprovalNotificationMeta {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/features/notifications/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/features/notifications/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { policyReviewField } from "../../../chat-protocol/policy-review.js";
|
|
2
3
|
import { APPROVAL_STATUS } from "../../chat/types/index.js";
|
|
3
4
|
const TICKET_APPROVAL_REQUEST_TYPE = "TICKET_APPROVAL_REQUEST";
|
|
4
5
|
const MINGO_APPROVAL_REQUEST_TYPE = "MINGO_APPROVAL_REQUEST";
|
|
@@ -52,7 +53,8 @@ function approvalMetaToBatchData(approval) {
|
|
|
52
53
|
toolType: tc.toolType ?? void 0,
|
|
53
54
|
requiresApproval: tc.requiresApproval ?? true,
|
|
54
55
|
approvalType: tc.approvalType ?? null,
|
|
55
|
-
toolCallArguments: tc.toolCallArguments ?? null
|
|
56
|
+
toolCallArguments: tc.toolCallArguments ?? null,
|
|
57
|
+
...policyReviewField(tc.policyReview)
|
|
56
58
|
}))
|
|
57
59
|
};
|
|
58
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-configuration-panel.d.ts","sourceRoot":"","sources":["../../../src/components/features/policy-configuration-panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"policy-configuration-panel.d.ts","sourceRoot":"","sources":["../../../src/components/features/policy-configuration-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,EAIV,6BAA6B,EAC9B,MAAM,yBAAyB,CAAC;AAmBjC,yGAAyG;AACzG,eAAO,MAAM,8CAA8C,IAAI,CAAC;AAkShE,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,6BAA6B,CA+DtE,CAAC"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { ChevronDown, Shield } from "lucide-react";
|
|
4
3
|
import { useState } from "react";
|
|
5
4
|
import { cn } from "../../utils/cn.js";
|
|
6
5
|
import { useCollapsible } from "../chat/hooks/use-collapsible.js";
|
|
6
|
+
import { Chevron02DownIcon, ShieldIcon } from "../icons-v2-generated/index.js";
|
|
7
7
|
import { TextLineSkeleton } from "../loading/unified-skeleton.js";
|
|
8
8
|
import { ToolIcon } from "../tool-icon.js";
|
|
9
9
|
import { Button } from "../ui/button/index.js";
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
DropdownMenu,
|
|
12
|
+
DropdownMenuContent,
|
|
13
|
+
DropdownMenuItem,
|
|
14
|
+
DropdownMenuSeparator,
|
|
15
|
+
DropdownMenuTrigger
|
|
16
|
+
} from "../ui/dropdown-menu.js";
|
|
11
17
|
import { loadingItemProps, useLoadingScope } from "../ui/loading-scope.js";
|
|
12
|
-
import { APPROVAL_LEVEL_META, APPROVAL_LEVELS } from "./approval-level.js";
|
|
13
|
-
const
|
|
14
|
-
const POLICY_LEVEL_WIDTH = "w-[180px]";
|
|
15
|
-
const CATEGORY_LEVEL_WIDTH = "w-[256px]";
|
|
18
|
+
import { APPROVAL_LEVEL_META, APPROVAL_LEVELS, ApprovalLevelView } from "./approval-level.js";
|
|
19
|
+
const CATEGORY_LEVEL_WIDTH = "w-[296px]";
|
|
16
20
|
const POLICY_CONFIGURATION_PANEL_SKELETON_CATEGORIES = 4;
|
|
17
21
|
const CATEGORY_HEADER_CLASS = "flex items-center gap-[var(--spacing-system-m)] border-t border-ods-border bg-ods-card py-[var(--spacing-system-s)] pl-[var(--spacing-system-m)] pr-[var(--spacing-system-xsf)] first:border-t-0";
|
|
18
22
|
const ICON_TILE_SIZE_CLASS = "h-8 w-8 shrink-0 rounded-md";
|
|
@@ -22,56 +26,59 @@ const CATEGORY_LEVEL_COLUMN_CLASS = cn(
|
|
|
22
26
|
"hidden shrink-0 px-[var(--spacing-system-sf)] py-[var(--spacing-system-xsf)] content-md:block",
|
|
23
27
|
CATEGORY_LEVEL_WIDTH
|
|
24
28
|
);
|
|
25
|
-
const CHEVRON_CLASS = "h-6 w-6 text-ods-text-primary transition-transform duration-300";
|
|
26
|
-
const
|
|
29
|
+
const CHEVRON_CLASS = "!h-6 !w-6 text-ods-text-primary transition-transform duration-300";
|
|
30
|
+
const LevelOption = ({ level }) => {
|
|
31
|
+
const { label, Icon, toneClassName } = APPROVAL_LEVEL_META[level];
|
|
32
|
+
return /* @__PURE__ */ jsxs("span", { className: "inline-flex min-w-0 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
33
|
+
/* @__PURE__ */ jsx(Icon, { size: 24, className: cn("shrink-0", toneClassName), "aria-hidden": true }),
|
|
34
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: label })
|
|
35
|
+
] });
|
|
36
|
+
};
|
|
37
|
+
const LEVEL_MENU_ITEM_CLASS = "p-[var(--spacing-system-sf)] text-h4 [&_svg]:size-4 md:[&_svg]:size-6";
|
|
27
38
|
const ApprovalLevelDropdown = ({ value, onChange, allowClear = false, triggerClassName, contentClassName, disabled }) => /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
28
39
|
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, disabled, children: /* @__PURE__ */ jsx(
|
|
29
40
|
Button,
|
|
30
41
|
{
|
|
31
42
|
variant: "outline",
|
|
32
43
|
disabled,
|
|
33
|
-
rightIcon: /* @__PURE__ */ jsx(
|
|
44
|
+
rightIcon: /* @__PURE__ */ jsx(Chevron02DownIcon, { className: "!h-6 !w-6 text-ods-text-secondary" }),
|
|
34
45
|
className: cn(
|
|
35
|
-
"flex h-auto items-center justify-between gap-[var(--spacing-system-xsf)] rounded-md border border-ods-border bg-ods-card !
|
|
46
|
+
"flex h-auto items-center justify-between gap-[var(--spacing-system-xsf)] rounded-md border border-ods-border bg-ods-card !p-[var(--spacing-system-sf)] transition-colors !text-h4 hover:bg-ods-bg-hover",
|
|
36
47
|
value ? "text-ods-text-primary" : "text-ods-text-secondary",
|
|
37
48
|
triggerClassName
|
|
38
49
|
),
|
|
39
|
-
children: value ?
|
|
50
|
+
children: value ? /* @__PURE__ */ jsx(LevelOption, { level: value }) : "Set Global Permission"
|
|
40
51
|
}
|
|
41
52
|
) }),
|
|
42
53
|
/* @__PURE__ */ jsxs(DropdownMenuContent, { align: "end", className: contentClassName, children: [
|
|
43
|
-
|
|
44
|
-
|
|
54
|
+
APPROVAL_LEVELS.map((level) => /* @__PURE__ */ jsx(DropdownMenuItem, { onClick: () => onChange(level), className: LEVEL_MENU_ITEM_CLASS, children: /* @__PURE__ */ jsx(LevelOption, { level }) }, level)),
|
|
55
|
+
allowClear && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
56
|
+
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
57
|
+
/* @__PURE__ */ jsx(DropdownMenuItem, { onClick: () => onChange(void 0), className: LEVEL_MENU_ITEM_CLASS, children: "Clear Global Permission" })
|
|
58
|
+
] })
|
|
45
59
|
] })
|
|
46
60
|
] });
|
|
47
61
|
const PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
62
|
+
const nameId = `policy-${categoryId}-${policy.id}`;
|
|
63
|
+
const level = policy.approvalLevel ? /* @__PURE__ */ jsx(
|
|
64
|
+
ApprovalLevelView,
|
|
65
|
+
{
|
|
66
|
+
value: policy.approvalLevel,
|
|
67
|
+
editable: editMode,
|
|
68
|
+
onChange: (next) => onPermissionChange(categoryId, policy.id, next),
|
|
69
|
+
"aria-labelledby": nameId
|
|
70
|
+
}
|
|
71
|
+
) : null;
|
|
51
72
|
return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-[var(--spacing-system-m)] border-b border-ods-border bg-ods-bg px-[var(--spacing-system-m)] py-[var(--spacing-system-sf)] last:border-b-0 content-md:items-center", children: [
|
|
52
|
-
/* @__PURE__ */ jsx("div", { className: ICON_TILE_CLASS, children: /* @__PURE__ */ jsx(ToolIcon, { toolType: policy.toolName, size: 16 }) }),
|
|
73
|
+
/* @__PURE__ */ jsx("div", { className: cn(ICON_TILE_CLASS, "text-ods-text-secondary", editMode && "hidden content-md:flex"), children: /* @__PURE__ */ jsx(ToolIcon, { toolType: policy.toolName, size: 16 }) }),
|
|
53
74
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
54
|
-
/* @__PURE__ */
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
value: policy.approvalLevel,
|
|
60
|
-
onChange: handleChange,
|
|
61
|
-
triggerClassName: "w-full",
|
|
62
|
-
contentClassName: POLICY_LEVEL_WIDTH
|
|
63
|
-
}
|
|
64
|
-
) }) : policy.approvalLevel ? /* @__PURE__ */ jsx("span", { className: "text-ods-text-primary text-h4 content-md:hidden", children: getApprovalLevelLabel(policy.approvalLevel) }) : null
|
|
75
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-[var(--spacing-system-sf)]", children: [
|
|
76
|
+
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 flex-col", children: /* @__PURE__ */ jsx("p", { id: nameId, className: "truncate text-ods-text-primary text-h4", title: policy.name, children: policy.name }) }),
|
|
77
|
+
editMode && /* @__PURE__ */ jsx("span", { className: "flex shrink-0 text-ods-text-secondary content-md:hidden", children: /* @__PURE__ */ jsx(ToolIcon, { toolType: policy.toolName, size: 16 }) })
|
|
78
|
+
] }),
|
|
79
|
+
level && /* @__PURE__ */ jsx("div", { className: cn("flex content-md:hidden", editMode && "mt-[var(--spacing-system-sf)]"), children: level })
|
|
65
80
|
] }),
|
|
66
|
-
/* @__PURE__ */ jsx("div", { className: "hidden shrink-0 content-md:
|
|
67
|
-
ApprovalLevelDropdown,
|
|
68
|
-
{
|
|
69
|
-
value: policy.approvalLevel,
|
|
70
|
-
onChange: handleChange,
|
|
71
|
-
triggerClassName: POLICY_LEVEL_WIDTH,
|
|
72
|
-
contentClassName: POLICY_LEVEL_WIDTH
|
|
73
|
-
}
|
|
74
|
-
) : /* @__PURE__ */ jsx("div", { className: cn("px-[var(--spacing-system-sf)] py-[var(--spacing-system-xsf)]", POLICY_LEVEL_WIDTH), children: policy.approvalLevel && /* @__PURE__ */ jsx("span", { className: "text-ods-text-primary text-h4", children: getApprovalLevelLabel(policy.approvalLevel) }) }) })
|
|
81
|
+
level && /* @__PURE__ */ jsx("div", { className: "hidden shrink-0 items-center content-md:flex", children: level })
|
|
75
82
|
] });
|
|
76
83
|
};
|
|
77
84
|
const LOADING_CATEGORY = { id: "", name: "", policies: [] };
|
|
@@ -95,29 +102,22 @@ const CategorySection = ({
|
|
|
95
102
|
"div",
|
|
96
103
|
{
|
|
97
104
|
...loadingItemProps(props),
|
|
98
|
-
className: cn(
|
|
105
|
+
className: cn(
|
|
106
|
+
CATEGORY_HEADER_CLASS,
|
|
107
|
+
!loading && "cursor-pointer transition-colors hover:bg-ods-bg-hover [&:has([data-bulk-level]:hover)]:bg-ods-card"
|
|
108
|
+
),
|
|
99
109
|
onClick: loading ? void 0 : () => onToggle(category.id),
|
|
100
110
|
children: [
|
|
101
|
-
/* @__PURE__ */ jsx("div", { className: ICON_TILE_CLASS, children: /* @__PURE__ */ jsx("div", { className: "text-ods-text-secondary", children: category.icon ?? /* @__PURE__ */ jsx(
|
|
111
|
+
/* @__PURE__ */ jsx("div", { className: ICON_TILE_CLASS, children: /* @__PURE__ */ jsx("div", { className: "text-ods-text-secondary", children: category.icon ?? /* @__PURE__ */ jsx(ShieldIcon, { size: 16 }) }) }),
|
|
102
112
|
/* @__PURE__ */ jsxs("div", { className: CATEGORY_TEXT_CLASS, children: [
|
|
103
113
|
category.name ? /* @__PURE__ */ jsx("p", { className: "truncate text-ods-text-primary text-h4", title: category.name, children: category.name }) : /* @__PURE__ */ jsx(TextLineSkeleton, { type: "h4", className: "w-40 max-w-full" }),
|
|
104
114
|
loading ? /* @__PURE__ */ jsx(TextLineSkeleton, { type: "h6", className: "w-24" }) : /* @__PURE__ */ jsxs("p", { className: "text-ods-text-secondary text-h6", children: [
|
|
105
115
|
category.policies.length,
|
|
106
|
-
"
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
ApprovalLevelDropdown,
|
|
110
|
-
{
|
|
111
|
-
value: bulkLevel,
|
|
112
|
-
onChange: handleBulkChange,
|
|
113
|
-
allowClear: true,
|
|
114
|
-
triggerClassName: "w-full",
|
|
115
|
-
contentClassName: CATEGORY_LEVEL_WIDTH,
|
|
116
|
-
disabled: loading
|
|
117
|
-
}
|
|
118
|
-
) })
|
|
116
|
+
" ",
|
|
117
|
+
category.policies.length === 1 ? "Configuration" : "Configurations"
|
|
118
|
+
] })
|
|
119
119
|
] }),
|
|
120
|
-
editMode ? /* @__PURE__ */ jsx("div", { className: "hidden shrink-0 content-md:block", onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx(
|
|
120
|
+
editMode ? /* @__PURE__ */ jsx("div", { "data-bulk-level": true, className: "hidden shrink-0 content-md:block", onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx(
|
|
121
121
|
ApprovalLevelDropdown,
|
|
122
122
|
{
|
|
123
123
|
value: bulkLevel,
|
|
@@ -138,8 +138,12 @@ const CategorySection = ({
|
|
|
138
138
|
e.stopPropagation();
|
|
139
139
|
onToggle(category.id);
|
|
140
140
|
},
|
|
141
|
-
leftIcon: /* @__PURE__ */ jsx(
|
|
142
|
-
className:
|
|
141
|
+
leftIcon: /* @__PURE__ */ jsx(Chevron02DownIcon, { className: cn(CHEVRON_CLASS, isExpanded && "rotate-180") }),
|
|
142
|
+
className: cn(
|
|
143
|
+
"h-auto w-auto shrink-0 rounded-md !p-[var(--spacing-system-xsf)] content-md:!p-[var(--spacing-system-sf)]",
|
|
144
|
+
// The row is the hover; the chevron adds none of its own.
|
|
145
|
+
"hover:bg-transparent active:bg-transparent"
|
|
146
|
+
),
|
|
143
147
|
"aria-label": isExpanded ? "Collapse" : "Expand"
|
|
144
148
|
}
|
|
145
149
|
)
|
|
@@ -157,16 +161,23 @@ const CategorySection = ({
|
|
|
157
161
|
visibility: isExpanded ? "visible" : "hidden"
|
|
158
162
|
},
|
|
159
163
|
className: isExpanded ? "opacity-100" : "opacity-0",
|
|
160
|
-
children: /* @__PURE__ */ jsx(
|
|
161
|
-
|
|
164
|
+
children: /* @__PURE__ */ jsx(
|
|
165
|
+
"div",
|
|
162
166
|
{
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
167
|
+
ref: innerRef,
|
|
168
|
+
className: "border-t border-ods-border px-[var(--spacing-system-mf)] pb-[var(--spacing-system-mf)] pt-[var(--spacing-system-mf)]",
|
|
169
|
+
children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden rounded-md border border-ods-border", children: (loading ? [] : category.policies).map((policy) => /* @__PURE__ */ jsx(
|
|
170
|
+
PolicyRow,
|
|
171
|
+
{
|
|
172
|
+
policy,
|
|
173
|
+
categoryId: category.id,
|
|
174
|
+
editMode,
|
|
175
|
+
onPermissionChange: onPolicyPermissionChange
|
|
176
|
+
},
|
|
177
|
+
policy.id
|
|
178
|
+
)) })
|
|
179
|
+
}
|
|
180
|
+
)
|
|
170
181
|
}
|
|
171
182
|
)
|
|
172
183
|
] });
|