@uipath/apollo-react 6.58.3 → 6.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/canvas/components/Guardrails/builder-types.d.ts +1 -0
  2. package/dist/canvas/components/Guardrails/builder-types.d.ts.map +1 -1
  3. package/dist/canvas/components/Guardrails/components/guardrail-field-picker.cjs +227 -0
  4. package/dist/canvas/components/Guardrails/components/guardrail-field-picker.d.ts +23 -0
  5. package/dist/canvas/components/Guardrails/components/guardrail-field-picker.d.ts.map +1 -0
  6. package/dist/canvas/components/Guardrails/components/guardrail-field-picker.js +193 -0
  7. package/dist/canvas/components/Guardrails/components/guardrail-rule-card.cjs +276 -0
  8. package/dist/canvas/components/Guardrails/components/guardrail-rule-card.d.ts +17 -0
  9. package/dist/canvas/components/Guardrails/components/guardrail-rule-card.d.ts.map +1 -0
  10. package/dist/canvas/components/Guardrails/components/guardrail-rule-card.js +242 -0
  11. package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.cjs +4 -2
  12. package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.d.ts +6 -8
  13. package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.d.ts.map +1 -1
  14. package/dist/canvas/components/Guardrails/components/guardrail-scope-selector.js +5 -3
  15. package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.cjs +76 -0
  16. package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.d.ts +13 -0
  17. package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.d.ts.map +1 -0
  18. package/dist/canvas/components/Guardrails/guardrail-filter-field-selector.js +42 -0
  19. package/dist/canvas/components/Guardrails/guardrail-rules-section.cjs +159 -0
  20. package/dist/canvas/components/Guardrails/guardrail-rules-section.d.ts +15 -0
  21. package/dist/canvas/components/Guardrails/guardrail-rules-section.d.ts.map +1 -0
  22. package/dist/canvas/components/Guardrails/guardrail-rules-section.js +125 -0
  23. package/dist/canvas/components/Guardrails/i18n.cjs +321 -16
  24. package/dist/canvas/components/Guardrails/i18n.d.ts +65 -0
  25. package/dist/canvas/components/Guardrails/i18n.d.ts.map +1 -1
  26. package/dist/canvas/components/Guardrails/i18n.js +271 -2
  27. package/dist/canvas/components/Guardrails/index.cjs +72 -4
  28. package/dist/canvas/components/Guardrails/index.d.ts +13 -3
  29. package/dist/canvas/components/Guardrails/index.d.ts.map +1 -1
  30. package/dist/canvas/components/Guardrails/index.js +7 -2
  31. package/dist/canvas/components/Guardrails/rules-types.cjs +61 -0
  32. package/dist/canvas/components/Guardrails/rules-types.d.ts +75 -0
  33. package/dist/canvas/components/Guardrails/rules-types.d.ts.map +1 -0
  34. package/dist/canvas/components/Guardrails/rules-types.js +27 -0
  35. package/dist/canvas/components/Guardrails/rules-utils.cjs +213 -0
  36. package/dist/canvas/components/Guardrails/rules-utils.d.ts +22 -0
  37. package/dist/canvas/components/Guardrails/rules-utils.d.ts.map +1 -0
  38. package/dist/canvas/components/Guardrails/rules-utils.js +140 -0
  39. package/dist/canvas/locales/en.cjs +1 -1
  40. package/dist/canvas/locales/en.d.ts.map +1 -1
  41. package/dist/canvas/locales/en.js +1 -1
  42. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  43. package/package.json +2 -2
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ GuardrailRuleCard: ()=>GuardrailRuleCard
28
+ });
29
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
31
+ const external_lucide_react_namespaceObject = require("lucide-react");
32
+ const external_react_namespaceObject = require("react");
33
+ const external_i18n_cjs_namespaceObject = require("../i18n.cjs");
34
+ const external_rules_types_cjs_namespaceObject = require("../rules-types.cjs");
35
+ const external_rules_utils_cjs_namespaceObject = require("../rules-utils.cjs");
36
+ const external_guardrail_field_picker_cjs_namespaceObject = require("./guardrail-field-picker.cjs");
37
+ const RULE_TYPE_LABEL_KEYS = {
38
+ word: 'ruleTypeWord',
39
+ number: 'ruleTypeNumber',
40
+ boolean: 'ruleTypeBoolean'
41
+ };
42
+ const OPERATOR_LABEL_KEYS = {
43
+ contains: 'operatorContains',
44
+ doesNotContain: 'operatorDoesNotContain',
45
+ equals: 'operatorEquals',
46
+ doesNotEqual: 'operatorDoesNotEqual',
47
+ startsWith: 'operatorStartsWith',
48
+ doesNotStartWith: 'operatorDoesNotStartWith',
49
+ endsWith: 'operatorEndsWith',
50
+ doesNotEndWith: 'operatorDoesNotEndWith',
51
+ isEmpty: 'operatorIsEmpty',
52
+ isNotEmpty: 'operatorIsNotEmpty',
53
+ matchesRegex: 'operatorMatchesRegex',
54
+ greaterThan: 'operatorGreaterThan',
55
+ greaterThanOrEqual: 'operatorGreaterThanOrEqual',
56
+ lessThan: 'operatorLessThan',
57
+ lessThanOrEqual: 'operatorLessThanOrEqual'
58
+ };
59
+ function NumberValueInput({ id, rule, onChange, error, placeholder }) {
60
+ const [draft, setDraft] = (0, external_react_namespaceObject.useState)(null);
61
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.Input, {
62
+ id: id,
63
+ type: "number",
64
+ step: "any",
65
+ value: draft ?? String(rule.value),
66
+ placeholder: placeholder,
67
+ error: error,
68
+ onChange: (e)=>{
69
+ setDraft(e.target.value);
70
+ const parsed = Number.parseFloat(e.target.value);
71
+ onChange({
72
+ ...rule,
73
+ value: Number.isFinite(parsed) ? parsed : 0
74
+ });
75
+ },
76
+ onBlur: ()=>setDraft(null)
77
+ });
78
+ }
79
+ function GuardrailRuleCard({ index, position, rule, ruleTypes, fields, onChange, onDelete, errors, renderFieldSelector, selectionChips, labels }) {
80
+ const uid = (0, external_react_namespaceObject.useId)();
81
+ const typeOptions = ruleTypes.includes(rule.$ruleType) ? ruleTypes : [
82
+ ...ruleTypes,
83
+ rule.$ruleType
84
+ ];
85
+ const fieldSelectorContext = {
86
+ index,
87
+ ruleType: rule.$ruleType,
88
+ selector: rule.fieldSelector,
89
+ fields,
90
+ onChange: (fieldSelector)=>onChange({
91
+ ...rule,
92
+ fieldSelector
93
+ }),
94
+ label: labels.fieldsLabel,
95
+ labelId: `${uid}-fields-label`,
96
+ invalid: Boolean(errors?.fields),
97
+ error: errors?.fields
98
+ };
99
+ const customFieldSelector = renderFieldSelector?.(fieldSelectorContext);
100
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
101
+ role: "group",
102
+ "aria-labelledby": `${uid}-title`,
103
+ "data-slot": "guardrail-rule",
104
+ className: "rounded-lg border border-border p-3 space-y-3",
105
+ children: [
106
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
107
+ className: "flex items-center justify-between",
108
+ children: [
109
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
110
+ id: `${uid}-title`,
111
+ className: "text-xs font-medium text-muted-foreground",
112
+ children: (0, external_i18n_cjs_namespaceObject.formatGuardrailFormMessage)(labels.ruleTitle, {
113
+ position
114
+ })
115
+ }),
116
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.Button, {
117
+ type: "button",
118
+ variant: "ghost",
119
+ size: "3xs",
120
+ icon: true,
121
+ "aria-label": (0, external_i18n_cjs_namespaceObject.formatGuardrailFormMessage)(labels.deleteRule, {
122
+ position
123
+ }),
124
+ className: "text-destructive future:text-destructive hover:text-destructive future:hover:text-destructive",
125
+ onClick: onDelete,
126
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.Trash2, {})
127
+ })
128
+ ]
129
+ }),
130
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
131
+ className: "grid grid-cols-1 @sm:grid-cols-2 @3xl:grid-cols-4 gap-3 items-start",
132
+ children: [
133
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.FormField, {
134
+ children: [
135
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.FormFieldLabel, {
136
+ htmlFor: `${uid}-type`,
137
+ required: true,
138
+ children: labels.ruleTypeLabel
139
+ }),
140
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.Select, {
141
+ value: rule.$ruleType,
142
+ onValueChange: (type)=>onChange((0, external_rules_utils_cjs_namespaceObject.changeGuardrailRuleType)(rule, type)),
143
+ children: [
144
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectTrigger, {
145
+ id: `${uid}-type`,
146
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectValue, {})
147
+ }),
148
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectContent, {
149
+ children: typeOptions.map((type)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectItem, {
150
+ value: type,
151
+ children: labels[RULE_TYPE_LABEL_KEYS[type]]
152
+ }, type))
153
+ })
154
+ ]
155
+ })
156
+ ]
157
+ }),
158
+ void 0 === customFieldSelector ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_guardrail_field_picker_cjs_namespaceObject.GuardrailFieldPicker, {
159
+ id: `${uid}-fields`,
160
+ labelId: fieldSelectorContext.labelId,
161
+ label: labels.fieldsLabel,
162
+ fields: fields,
163
+ selected: 'specific' === rule.fieldSelector.$selectorType ? rule.fieldSelector.fields : [],
164
+ onToggle: (field)=>fieldSelectorContext.onChange((0, external_rules_utils_cjs_namespaceObject.toggleGuardrailSelectorField)(rule.fieldSelector, field)),
165
+ allFields: {
166
+ label: labels.allFields,
167
+ selected: 'all' === rule.fieldSelector.$selectorType,
168
+ onSelect: ()=>fieldSelectorContext.onChange({
169
+ $selectorType: 'all'
170
+ })
171
+ },
172
+ chips: selectionChips,
173
+ error: errors?.fields,
174
+ labels: labels
175
+ }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.FormField, {
176
+ children: [
177
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.FormFieldLabel, {
178
+ id: fieldSelectorContext.labelId,
179
+ required: true,
180
+ children: labels.fieldsLabel
181
+ }),
182
+ customFieldSelector
183
+ ]
184
+ }),
185
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.FormField, {
186
+ children: [
187
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.FormFieldLabel, {
188
+ htmlFor: `${uid}-operator`,
189
+ required: true,
190
+ children: labels.operatorLabel
191
+ }),
192
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.Select, {
193
+ value: rule.operator,
194
+ onValueChange: (operator)=>onChange({
195
+ ...rule,
196
+ operator
197
+ }),
198
+ children: [
199
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectTrigger, {
200
+ id: `${uid}-operator`,
201
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectValue, {})
202
+ }),
203
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectContent, {
204
+ children: external_rules_types_cjs_namespaceObject.GUARDRAIL_RULE_OPERATORS[rule.$ruleType].map((operator)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectItem, {
205
+ value: operator,
206
+ children: labels[OPERATOR_LABEL_KEYS[operator]]
207
+ }, operator))
208
+ })
209
+ ]
210
+ })
211
+ ]
212
+ }),
213
+ (0, external_rules_utils_cjs_namespaceObject.guardrailOperatorTakesValue)(rule.operator) && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.FormField, {
214
+ children: [
215
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.FormFieldLabel, {
216
+ htmlFor: `${uid}-value`,
217
+ required: true,
218
+ children: labels.valueLabel
219
+ }),
220
+ 'word' === rule.$ruleType && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.Input, {
221
+ id: `${uid}-value`,
222
+ value: rule.value ?? '',
223
+ placeholder: labels.valuePlaceholder,
224
+ error: errors?.value,
225
+ onChange: (e)=>onChange({
226
+ ...rule,
227
+ value: e.target.value
228
+ })
229
+ }),
230
+ 'number' === rule.$ruleType && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(NumberValueInput, {
231
+ id: `${uid}-value`,
232
+ rule: rule,
233
+ onChange: onChange,
234
+ error: errors?.value,
235
+ placeholder: labels.valuePlaceholder
236
+ }),
237
+ 'boolean' === rule.$ruleType && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.Select, {
238
+ value: String(rule.value),
239
+ onValueChange: (value)=>onChange({
240
+ ...rule,
241
+ value: 'true' === value
242
+ }),
243
+ children: [
244
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectTrigger, {
245
+ id: `${uid}-value`,
246
+ error: errors?.value,
247
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectValue, {})
248
+ }),
249
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.SelectContent, {
250
+ children: [
251
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectItem, {
252
+ value: "true",
253
+ children: labels.valueTrue
254
+ }),
255
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.SelectItem, {
256
+ value: "false",
257
+ children: labels.valueFalse
258
+ })
259
+ ]
260
+ })
261
+ ]
262
+ })
263
+ ]
264
+ })
265
+ ]
266
+ })
267
+ ]
268
+ });
269
+ }
270
+ exports.GuardrailRuleCard = __webpack_exports__.GuardrailRuleCard;
271
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
272
+ "GuardrailRuleCard"
273
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
274
+ Object.defineProperty(exports, '__esModule', {
275
+ value: true
276
+ });
@@ -0,0 +1,17 @@
1
+ import { type GuardrailRulesLabels } from '../i18n';
2
+ import { type GuardrailFieldGroup, type GuardrailFieldRule, type GuardrailFieldRuleType, type GuardrailRule, type GuardrailRuleErrors, type GuardrailRuleFieldSelectorRenderer } from '../rules-types';
3
+ export interface GuardrailRuleCardProps {
4
+ index: number;
5
+ position: number;
6
+ rule: GuardrailFieldRule;
7
+ ruleTypes: readonly GuardrailFieldRuleType[];
8
+ fields: GuardrailFieldGroup;
9
+ onChange: (rule: GuardrailRule) => void;
10
+ onDelete: () => void;
11
+ errors?: GuardrailRuleErrors;
12
+ renderFieldSelector?: GuardrailRuleFieldSelectorRenderer;
13
+ selectionChips?: boolean;
14
+ labels: GuardrailRulesLabels;
15
+ }
16
+ export declare function GuardrailRuleCard({ index, position, rule, ruleTypes, fields, onChange, onDelete, errors, renderFieldSelector, selectionChips, labels, }: GuardrailRuleCardProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=guardrail-rule-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardrail-rule-card.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Guardrails/components/guardrail-rule-card.tsx"],"names":[],"mappings":"AAaA,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAE3B,KAAK,aAAa,EAClB,KAAK,mBAAmB,EAExB,KAAK,kCAAkC,EAExC,MAAM,gBAAgB,CAAC;AAkCxB,MAAM,WAAW,sBAAsB;IAErC,KAAK,EAAE,MAAM,CAAC;IAEd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,kBAAkB,CAAC;IAEzB,SAAS,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC7C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,mBAAmB,CAAC,EAAE,kCAAkC,CAAC;IAEzD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAqCD,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,mBAAmB,EACnB,cAAc,EACd,MAAM,GACP,EAAE,sBAAsB,2CAwKxB"}
@@ -0,0 +1,242 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Button, FormField, FormFieldLabel, Input, Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@uipath/apollo-wind";
3
+ import { Trash2 } from "lucide-react";
4
+ import { useId, useState } from "react";
5
+ import { formatGuardrailFormMessage } from "../i18n.js";
6
+ import { GUARDRAIL_RULE_OPERATORS } from "../rules-types.js";
7
+ import { changeGuardrailRuleType, guardrailOperatorTakesValue, toggleGuardrailSelectorField } from "../rules-utils.js";
8
+ import { GuardrailFieldPicker } from "./guardrail-field-picker.js";
9
+ const RULE_TYPE_LABEL_KEYS = {
10
+ word: 'ruleTypeWord',
11
+ number: 'ruleTypeNumber',
12
+ boolean: 'ruleTypeBoolean'
13
+ };
14
+ const OPERATOR_LABEL_KEYS = {
15
+ contains: 'operatorContains',
16
+ doesNotContain: 'operatorDoesNotContain',
17
+ equals: 'operatorEquals',
18
+ doesNotEqual: 'operatorDoesNotEqual',
19
+ startsWith: 'operatorStartsWith',
20
+ doesNotStartWith: 'operatorDoesNotStartWith',
21
+ endsWith: 'operatorEndsWith',
22
+ doesNotEndWith: 'operatorDoesNotEndWith',
23
+ isEmpty: 'operatorIsEmpty',
24
+ isNotEmpty: 'operatorIsNotEmpty',
25
+ matchesRegex: 'operatorMatchesRegex',
26
+ greaterThan: 'operatorGreaterThan',
27
+ greaterThanOrEqual: 'operatorGreaterThanOrEqual',
28
+ lessThan: 'operatorLessThan',
29
+ lessThanOrEqual: 'operatorLessThanOrEqual'
30
+ };
31
+ function NumberValueInput({ id, rule, onChange, error, placeholder }) {
32
+ const [draft, setDraft] = useState(null);
33
+ return /*#__PURE__*/ jsx(Input, {
34
+ id: id,
35
+ type: "number",
36
+ step: "any",
37
+ value: draft ?? String(rule.value),
38
+ placeholder: placeholder,
39
+ error: error,
40
+ onChange: (e)=>{
41
+ setDraft(e.target.value);
42
+ const parsed = Number.parseFloat(e.target.value);
43
+ onChange({
44
+ ...rule,
45
+ value: Number.isFinite(parsed) ? parsed : 0
46
+ });
47
+ },
48
+ onBlur: ()=>setDraft(null)
49
+ });
50
+ }
51
+ function GuardrailRuleCard({ index, position, rule, ruleTypes, fields, onChange, onDelete, errors, renderFieldSelector, selectionChips, labels }) {
52
+ const uid = useId();
53
+ const typeOptions = ruleTypes.includes(rule.$ruleType) ? ruleTypes : [
54
+ ...ruleTypes,
55
+ rule.$ruleType
56
+ ];
57
+ const fieldSelectorContext = {
58
+ index,
59
+ ruleType: rule.$ruleType,
60
+ selector: rule.fieldSelector,
61
+ fields,
62
+ onChange: (fieldSelector)=>onChange({
63
+ ...rule,
64
+ fieldSelector
65
+ }),
66
+ label: labels.fieldsLabel,
67
+ labelId: `${uid}-fields-label`,
68
+ invalid: Boolean(errors?.fields),
69
+ error: errors?.fields
70
+ };
71
+ const customFieldSelector = renderFieldSelector?.(fieldSelectorContext);
72
+ return /*#__PURE__*/ jsxs("div", {
73
+ role: "group",
74
+ "aria-labelledby": `${uid}-title`,
75
+ "data-slot": "guardrail-rule",
76
+ className: "rounded-lg border border-border p-3 space-y-3",
77
+ children: [
78
+ /*#__PURE__*/ jsxs("div", {
79
+ className: "flex items-center justify-between",
80
+ children: [
81
+ /*#__PURE__*/ jsx("span", {
82
+ id: `${uid}-title`,
83
+ className: "text-xs font-medium text-muted-foreground",
84
+ children: formatGuardrailFormMessage(labels.ruleTitle, {
85
+ position
86
+ })
87
+ }),
88
+ /*#__PURE__*/ jsx(Button, {
89
+ type: "button",
90
+ variant: "ghost",
91
+ size: "3xs",
92
+ icon: true,
93
+ "aria-label": formatGuardrailFormMessage(labels.deleteRule, {
94
+ position
95
+ }),
96
+ className: "text-destructive future:text-destructive hover:text-destructive future:hover:text-destructive",
97
+ onClick: onDelete,
98
+ children: /*#__PURE__*/ jsx(Trash2, {})
99
+ })
100
+ ]
101
+ }),
102
+ /*#__PURE__*/ jsxs("div", {
103
+ className: "grid grid-cols-1 @sm:grid-cols-2 @3xl:grid-cols-4 gap-3 items-start",
104
+ children: [
105
+ /*#__PURE__*/ jsxs(FormField, {
106
+ children: [
107
+ /*#__PURE__*/ jsx(FormFieldLabel, {
108
+ htmlFor: `${uid}-type`,
109
+ required: true,
110
+ children: labels.ruleTypeLabel
111
+ }),
112
+ /*#__PURE__*/ jsxs(Select, {
113
+ value: rule.$ruleType,
114
+ onValueChange: (type)=>onChange(changeGuardrailRuleType(rule, type)),
115
+ children: [
116
+ /*#__PURE__*/ jsx(SelectTrigger, {
117
+ id: `${uid}-type`,
118
+ children: /*#__PURE__*/ jsx(SelectValue, {})
119
+ }),
120
+ /*#__PURE__*/ jsx(SelectContent, {
121
+ children: typeOptions.map((type)=>/*#__PURE__*/ jsx(SelectItem, {
122
+ value: type,
123
+ children: labels[RULE_TYPE_LABEL_KEYS[type]]
124
+ }, type))
125
+ })
126
+ ]
127
+ })
128
+ ]
129
+ }),
130
+ void 0 === customFieldSelector ? /*#__PURE__*/ jsx(GuardrailFieldPicker, {
131
+ id: `${uid}-fields`,
132
+ labelId: fieldSelectorContext.labelId,
133
+ label: labels.fieldsLabel,
134
+ fields: fields,
135
+ selected: 'specific' === rule.fieldSelector.$selectorType ? rule.fieldSelector.fields : [],
136
+ onToggle: (field)=>fieldSelectorContext.onChange(toggleGuardrailSelectorField(rule.fieldSelector, field)),
137
+ allFields: {
138
+ label: labels.allFields,
139
+ selected: 'all' === rule.fieldSelector.$selectorType,
140
+ onSelect: ()=>fieldSelectorContext.onChange({
141
+ $selectorType: 'all'
142
+ })
143
+ },
144
+ chips: selectionChips,
145
+ error: errors?.fields,
146
+ labels: labels
147
+ }) : /*#__PURE__*/ jsxs(FormField, {
148
+ children: [
149
+ /*#__PURE__*/ jsx(FormFieldLabel, {
150
+ id: fieldSelectorContext.labelId,
151
+ required: true,
152
+ children: labels.fieldsLabel
153
+ }),
154
+ customFieldSelector
155
+ ]
156
+ }),
157
+ /*#__PURE__*/ jsxs(FormField, {
158
+ children: [
159
+ /*#__PURE__*/ jsx(FormFieldLabel, {
160
+ htmlFor: `${uid}-operator`,
161
+ required: true,
162
+ children: labels.operatorLabel
163
+ }),
164
+ /*#__PURE__*/ jsxs(Select, {
165
+ value: rule.operator,
166
+ onValueChange: (operator)=>onChange({
167
+ ...rule,
168
+ operator
169
+ }),
170
+ children: [
171
+ /*#__PURE__*/ jsx(SelectTrigger, {
172
+ id: `${uid}-operator`,
173
+ children: /*#__PURE__*/ jsx(SelectValue, {})
174
+ }),
175
+ /*#__PURE__*/ jsx(SelectContent, {
176
+ children: GUARDRAIL_RULE_OPERATORS[rule.$ruleType].map((operator)=>/*#__PURE__*/ jsx(SelectItem, {
177
+ value: operator,
178
+ children: labels[OPERATOR_LABEL_KEYS[operator]]
179
+ }, operator))
180
+ })
181
+ ]
182
+ })
183
+ ]
184
+ }),
185
+ guardrailOperatorTakesValue(rule.operator) && /*#__PURE__*/ jsxs(FormField, {
186
+ children: [
187
+ /*#__PURE__*/ jsx(FormFieldLabel, {
188
+ htmlFor: `${uid}-value`,
189
+ required: true,
190
+ children: labels.valueLabel
191
+ }),
192
+ 'word' === rule.$ruleType && /*#__PURE__*/ jsx(Input, {
193
+ id: `${uid}-value`,
194
+ value: rule.value ?? '',
195
+ placeholder: labels.valuePlaceholder,
196
+ error: errors?.value,
197
+ onChange: (e)=>onChange({
198
+ ...rule,
199
+ value: e.target.value
200
+ })
201
+ }),
202
+ 'number' === rule.$ruleType && /*#__PURE__*/ jsx(NumberValueInput, {
203
+ id: `${uid}-value`,
204
+ rule: rule,
205
+ onChange: onChange,
206
+ error: errors?.value,
207
+ placeholder: labels.valuePlaceholder
208
+ }),
209
+ 'boolean' === rule.$ruleType && /*#__PURE__*/ jsxs(Select, {
210
+ value: String(rule.value),
211
+ onValueChange: (value)=>onChange({
212
+ ...rule,
213
+ value: 'true' === value
214
+ }),
215
+ children: [
216
+ /*#__PURE__*/ jsx(SelectTrigger, {
217
+ id: `${uid}-value`,
218
+ error: errors?.value,
219
+ children: /*#__PURE__*/ jsx(SelectValue, {})
220
+ }),
221
+ /*#__PURE__*/ jsxs(SelectContent, {
222
+ children: [
223
+ /*#__PURE__*/ jsx(SelectItem, {
224
+ value: "true",
225
+ children: labels.valueTrue
226
+ }),
227
+ /*#__PURE__*/ jsx(SelectItem, {
228
+ value: "false",
229
+ children: labels.valueFalse
230
+ })
231
+ ]
232
+ })
233
+ ]
234
+ })
235
+ ]
236
+ })
237
+ ]
238
+ })
239
+ ]
240
+ });
241
+ }
242
+ export { GuardrailRuleCard };
@@ -30,6 +30,7 @@ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
30
  const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
31
31
  const external_lucide_react_namespaceObject = require("lucide-react");
32
32
  const external_react_namespaceObject = require("react");
33
+ const external_i18n_cjs_namespaceObject = require("../i18n.cjs");
33
34
  const external_field_shell_cjs_namespaceObject = require("./field-shell.cjs");
34
35
  const external_guardrail_chip_cjs_namespaceObject = require("./guardrail-chip.cjs");
35
36
  const ALL_SCOPES = [
@@ -37,7 +38,8 @@ const ALL_SCOPES = [
37
38
  'Llm',
38
39
  'Tool'
39
40
  ];
40
- function GuardrailScopeSelector({ selector, onChange, availableToolNames = [], allowedScopes, errors, labels }) {
41
+ function GuardrailScopeSelector({ selector, onChange, availableToolNames = [], allowedScopes, errors, labels: labelOverrides, className }) {
42
+ const labels = (0, external_i18n_cjs_namespaceObject.useGuardrailScopeSelectorLabels)(labelOverrides);
41
43
  const uid = (0, external_react_namespaceObject.useId)();
42
44
  const scopeLabels = (0, external_react_namespaceObject.useMemo)(()=>({
43
45
  Agent: labels.scopeAgentLabel,
@@ -125,7 +127,7 @@ function GuardrailScopeSelector({ selector, onChange, availableToolNames = [], a
125
127
  ]);
126
128
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
127
129
  "data-slot": "guardrail-scope-selector",
128
- className: "space-y-3",
130
+ className: (0, apollo_wind_namespaceObject.cn)('space-y-3', className),
129
131
  children: [
130
132
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.FormField, {
131
133
  children: [
@@ -1,15 +1,13 @@
1
- import type { GuardrailScope, GuardrailSelector } from '../builder-types';
2
- import type { GuardrailBuilderLabels } from '../i18n';
1
+ import type { GuardrailScope, GuardrailScopeSelectorErrors, GuardrailSelector } from '../builder-types';
2
+ import { type GuardrailScopeSelectorLabels } from '../i18n';
3
3
  export interface GuardrailScopeSelectorProps {
4
4
  selector: GuardrailSelector;
5
5
  onChange: (selector: GuardrailSelector) => void;
6
6
  availableToolNames?: string[];
7
7
  allowedScopes?: GuardrailScope[];
8
- errors?: {
9
- scopes?: string;
10
- toolNames?: string;
11
- };
12
- labels: GuardrailBuilderLabels;
8
+ errors?: GuardrailScopeSelectorErrors;
9
+ labels?: Partial<GuardrailScopeSelectorLabels>;
10
+ className?: string;
13
11
  }
14
- export declare function GuardrailScopeSelector({ selector, onChange, availableToolNames, allowedScopes, errors, labels, }: GuardrailScopeSelectorProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function GuardrailScopeSelector({ selector, onChange, availableToolNames, allowedScopes, errors, labels: labelOverrides, className, }: GuardrailScopeSelectorProps): import("react/jsx-runtime").JSX.Element;
15
13
  //# sourceMappingURL=guardrail-scope-selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"guardrail-scope-selector.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Guardrails/components/guardrail-scope-selector.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAMtD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAEhD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAMD,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,QAAQ,EACR,kBAAuB,EACvB,aAAa,EACb,MAAM,EACN,MAAM,GACP,EAAE,2BAA2B,2CAkK7B"}
1
+ {"version":3,"file":"guardrail-scope-selector.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Guardrails/components/guardrail-scope-selector.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,4BAA4B,EAC5B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,4BAA4B,EAAmC,MAAM,SAAS,CAAC;AAM7F,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,iBAAiB,CAAC;IAE5B,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAEhD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;IAEjC,MAAM,CAAC,EAAE,4BAA4B,CAAC;IAEtC,MAAM,CAAC,EAAE,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,QAAQ,EACR,kBAAuB,EACvB,aAAa,EACb,MAAM,EACN,MAAM,EAAE,cAAc,EACtB,SAAS,GACV,EAAE,2BAA2B,2CAmK7B"}
@@ -1,7 +1,8 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { FormField, FormFieldError, Label, RequiredIndicator } from "@uipath/apollo-wind";
2
+ import { FormField, FormFieldError, Label, RequiredIndicator, cn } from "@uipath/apollo-wind";
3
3
  import { Check, Plus } from "lucide-react";
4
4
  import { useCallback, useEffect, useId, useMemo } from "react";
5
+ import { useGuardrailScopeSelectorLabels } from "../i18n.js";
5
6
  import { FieldShell } from "./field-shell.js";
6
7
  import { GuardrailChip } from "./guardrail-chip.js";
7
8
  const ALL_SCOPES = [
@@ -9,7 +10,8 @@ const ALL_SCOPES = [
9
10
  'Llm',
10
11
  'Tool'
11
12
  ];
12
- function GuardrailScopeSelector({ selector, onChange, availableToolNames = [], allowedScopes, errors, labels }) {
13
+ function GuardrailScopeSelector({ selector, onChange, availableToolNames = [], allowedScopes, errors, labels: labelOverrides, className }) {
14
+ const labels = useGuardrailScopeSelectorLabels(labelOverrides);
13
15
  const uid = useId();
14
16
  const scopeLabels = useMemo(()=>({
15
17
  Agent: labels.scopeAgentLabel,
@@ -97,7 +99,7 @@ function GuardrailScopeSelector({ selector, onChange, availableToolNames = [], a
97
99
  ]);
98
100
  return /*#__PURE__*/ jsxs("div", {
99
101
  "data-slot": "guardrail-scope-selector",
100
- className: "space-y-3",
102
+ className: cn('space-y-3', className),
101
103
  children: [
102
104
  /*#__PURE__*/ jsxs(FormField, {
103
105
  children: [