shiplightai 0.1.78 → 0.1.79
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/cjs/debugger-manager.cjs +9 -9
- package/dist/cjs/debugger-pw.cjs +29 -29
- package/dist/cjs/fixture.cjs +43 -43
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/reporter.cjs +1 -1
- package/dist/cli.js +29 -29
- package/dist/debugger-manager.d.ts +1 -1
- package/dist/debugger-manager.js +9 -9
- package/dist/debugger-pw.js +38 -38
- package/dist/debugger-server.d.ts +1 -1
- package/dist/fixture.js +47 -47
- package/dist/index.js +2 -2
- package/dist/reporter.js +1 -1
- package/dist/static-embedded/assets/{index-Dk5ihq1Y.js → index-BMtHZTuv.js} +2 -2
- package/dist/static-embedded/assets/{index-uF1WN2rG.css → index-CrXycucL.css} +6 -0
- package/dist/static-embedded/assets/{index-Mg0a6DkO.js → index-iW9rlkck.js} +1149 -321
- package/dist/static-embedded/index.html +2 -2
- package/package.json +3 -2
|
@@ -11027,7 +11027,7 @@ function useCollapse({
|
|
|
11027
11027
|
}
|
|
11028
11028
|
return getCollapseProps;
|
|
11029
11029
|
}
|
|
11030
|
-
const defaultProps$
|
|
11030
|
+
const defaultProps$P = {
|
|
11031
11031
|
transitionDuration: 200,
|
|
11032
11032
|
transitionTimingFunction: "ease",
|
|
11033
11033
|
animateOpacity: true
|
|
@@ -11043,7 +11043,7 @@ const Collapse = factory((props, ref) => {
|
|
|
11043
11043
|
animateOpacity,
|
|
11044
11044
|
keepMounted,
|
|
11045
11045
|
...others
|
|
11046
|
-
} = useProps("Collapse", defaultProps$
|
|
11046
|
+
} = useProps("Collapse", defaultProps$P, props);
|
|
11047
11047
|
const theme2 = useMantineTheme();
|
|
11048
11048
|
const shouldReduceMotion = useReducedMotion();
|
|
11049
11049
|
const reduceMotion = theme2.respectReducedMotion ? shouldReduceMotion : false;
|
|
@@ -14409,14 +14409,14 @@ const ScrollAreaCorner = reactExports.forwardRef((props, ref) => {
|
|
|
14409
14409
|
const hasCorner = ctx.type !== "scroll" && hasBothScrollbarsVisible;
|
|
14410
14410
|
return hasCorner ? /* @__PURE__ */ jsxRuntimeExports.jsx(Corner, { ...props, ref }) : null;
|
|
14411
14411
|
});
|
|
14412
|
-
const defaultProps$
|
|
14412
|
+
const defaultProps$O = {
|
|
14413
14413
|
scrollHideDelay: 1e3,
|
|
14414
14414
|
type: "hover"
|
|
14415
14415
|
};
|
|
14416
14416
|
const ScrollAreaRoot = reactExports.forwardRef((_props, ref) => {
|
|
14417
14417
|
const { type, scrollHideDelay, scrollbars, getStyles: getStyles2, ...others } = useProps(
|
|
14418
14418
|
"ScrollAreaRoot",
|
|
14419
|
-
defaultProps$
|
|
14419
|
+
defaultProps$O,
|
|
14420
14420
|
_props
|
|
14421
14421
|
);
|
|
14422
14422
|
const [scrollArea, setScrollArea] = reactExports.useState(null);
|
|
@@ -15045,13 +15045,13 @@ const ScrollAreaViewport = reactExports.forwardRef(
|
|
|
15045
15045
|
}
|
|
15046
15046
|
);
|
|
15047
15047
|
ScrollAreaViewport.displayName = "@mantine/core/ScrollAreaViewport";
|
|
15048
|
-
var classes$
|
|
15049
|
-
const defaultProps$
|
|
15048
|
+
var classes$E = { "root": "m_d57069b5", "viewport": "m_c0783ff9", "viewportInner": "m_f8f631dd", "scrollbar": "m_c44ba933", "thumb": "m_d8b5e363", "corner": "m_21657268", "content": "m_b1336c6" };
|
|
15049
|
+
const defaultProps$N = {
|
|
15050
15050
|
scrollHideDelay: 1e3,
|
|
15051
15051
|
type: "hover",
|
|
15052
15052
|
scrollbars: "xy"
|
|
15053
15053
|
};
|
|
15054
|
-
const varsResolver$
|
|
15054
|
+
const varsResolver$J = createVarsResolver(
|
|
15055
15055
|
(_, { scrollbarSize, overscrollBehavior }) => ({
|
|
15056
15056
|
root: {
|
|
15057
15057
|
"--scrollarea-scrollbar-size": rem(scrollbarSize),
|
|
@@ -15060,7 +15060,7 @@ const varsResolver$H = createVarsResolver(
|
|
|
15060
15060
|
})
|
|
15061
15061
|
);
|
|
15062
15062
|
const ScrollArea = factory((_props, ref) => {
|
|
15063
|
-
const props = useProps("ScrollArea", defaultProps$
|
|
15063
|
+
const props = useProps("ScrollArea", defaultProps$N, _props);
|
|
15064
15064
|
const {
|
|
15065
15065
|
classNames,
|
|
15066
15066
|
className,
|
|
@@ -15089,7 +15089,7 @@ const ScrollArea = factory((_props, ref) => {
|
|
|
15089
15089
|
const getStyles2 = useStyles({
|
|
15090
15090
|
name: "ScrollArea",
|
|
15091
15091
|
props,
|
|
15092
|
-
classes: classes$
|
|
15092
|
+
classes: classes$E,
|
|
15093
15093
|
className,
|
|
15094
15094
|
style: style2,
|
|
15095
15095
|
classNames,
|
|
@@ -15097,7 +15097,7 @@ const ScrollArea = factory((_props, ref) => {
|
|
|
15097
15097
|
unstyled,
|
|
15098
15098
|
attributes,
|
|
15099
15099
|
vars,
|
|
15100
|
-
varsResolver: varsResolver$
|
|
15100
|
+
varsResolver: varsResolver$J
|
|
15101
15101
|
});
|
|
15102
15102
|
const localViewportRef = reactExports.useRef(null);
|
|
15103
15103
|
const combinedViewportRef = useMergeRefs([viewportRef, localViewportRef]);
|
|
@@ -15211,7 +15211,7 @@ const ScrollAreaAutosize = factory((props, ref) => {
|
|
|
15211
15211
|
onBottomReached,
|
|
15212
15212
|
onTopReached,
|
|
15213
15213
|
...others
|
|
15214
|
-
} = useProps("ScrollAreaAutosize", defaultProps$
|
|
15214
|
+
} = useProps("ScrollAreaAutosize", defaultProps$N, props);
|
|
15215
15215
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { ...others, ref, style: [{ display: "flex", overflow: "auto" }, style2], children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { style: { display: "flex", flexDirection: "column", flex: 1 }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
15216
15216
|
ScrollArea,
|
|
15217
15217
|
{
|
|
@@ -15235,17 +15235,17 @@ const ScrollAreaAutosize = factory((props, ref) => {
|
|
|
15235
15235
|
}
|
|
15236
15236
|
) }) });
|
|
15237
15237
|
});
|
|
15238
|
-
ScrollArea.classes = classes$
|
|
15238
|
+
ScrollArea.classes = classes$E;
|
|
15239
15239
|
ScrollAreaAutosize.displayName = "@mantine/core/ScrollAreaAutosize";
|
|
15240
|
-
ScrollAreaAutosize.classes = classes$
|
|
15240
|
+
ScrollAreaAutosize.classes = classes$E;
|
|
15241
15241
|
ScrollArea.Autosize = ScrollAreaAutosize;
|
|
15242
|
-
var classes$
|
|
15243
|
-
const defaultProps$
|
|
15242
|
+
var classes$D = { "root": "m_87cf2631" };
|
|
15243
|
+
const defaultProps$M = {
|
|
15244
15244
|
__staticSelector: "UnstyledButton"
|
|
15245
15245
|
};
|
|
15246
15246
|
const UnstyledButton = polymorphicFactory(
|
|
15247
15247
|
(_props, ref) => {
|
|
15248
|
-
const props = useProps("UnstyledButton", defaultProps$
|
|
15248
|
+
const props = useProps("UnstyledButton", defaultProps$M, _props);
|
|
15249
15249
|
const {
|
|
15250
15250
|
className,
|
|
15251
15251
|
component = "button",
|
|
@@ -15260,7 +15260,7 @@ const UnstyledButton = polymorphicFactory(
|
|
|
15260
15260
|
const getStyles2 = useStyles({
|
|
15261
15261
|
name: __staticSelector,
|
|
15262
15262
|
props,
|
|
15263
|
-
classes: classes$
|
|
15263
|
+
classes: classes$D,
|
|
15264
15264
|
className,
|
|
15265
15265
|
style: style2,
|
|
15266
15266
|
classNames,
|
|
@@ -15280,15 +15280,15 @@ const UnstyledButton = polymorphicFactory(
|
|
|
15280
15280
|
);
|
|
15281
15281
|
}
|
|
15282
15282
|
);
|
|
15283
|
-
UnstyledButton.classes = classes$
|
|
15283
|
+
UnstyledButton.classes = classes$D;
|
|
15284
15284
|
UnstyledButton.displayName = "@mantine/core/UnstyledButton";
|
|
15285
|
-
var classes$
|
|
15285
|
+
var classes$C = { "root": "m_515a97f8" };
|
|
15286
15286
|
const VisuallyHidden = factory((_props, ref) => {
|
|
15287
15287
|
const props = useProps("VisuallyHidden", null, _props);
|
|
15288
15288
|
const { classNames, className, style: style2, styles: styles2, unstyled, vars, attributes, ...others } = props;
|
|
15289
15289
|
const getStyles2 = useStyles({
|
|
15290
15290
|
name: "VisuallyHidden",
|
|
15291
|
-
classes: classes$
|
|
15291
|
+
classes: classes$C,
|
|
15292
15292
|
props,
|
|
15293
15293
|
className,
|
|
15294
15294
|
style: style2,
|
|
@@ -15299,10 +15299,10 @@ const VisuallyHidden = factory((_props, ref) => {
|
|
|
15299
15299
|
});
|
|
15300
15300
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { component: "span", ref, ...getStyles2("root"), ...others });
|
|
15301
15301
|
});
|
|
15302
|
-
VisuallyHidden.classes = classes$
|
|
15302
|
+
VisuallyHidden.classes = classes$C;
|
|
15303
15303
|
VisuallyHidden.displayName = "@mantine/core/VisuallyHidden";
|
|
15304
|
-
var classes$
|
|
15305
|
-
const varsResolver$
|
|
15304
|
+
var classes$B = { "root": "m_1b7284a3" };
|
|
15305
|
+
const varsResolver$I = createVarsResolver((_, { radius, shadow }) => ({
|
|
15306
15306
|
root: {
|
|
15307
15307
|
"--paper-radius": radius === void 0 ? void 0 : getRadius(radius),
|
|
15308
15308
|
"--paper-shadow": getShadow(shadow)
|
|
@@ -15328,7 +15328,7 @@ const Paper = polymorphicFactory((_props, ref) => {
|
|
|
15328
15328
|
const getStyles2 = useStyles({
|
|
15329
15329
|
name: "Paper",
|
|
15330
15330
|
props,
|
|
15331
|
-
classes: classes$
|
|
15331
|
+
classes: classes$B,
|
|
15332
15332
|
className,
|
|
15333
15333
|
style: style2,
|
|
15334
15334
|
classNames,
|
|
@@ -15336,7 +15336,7 @@ const Paper = polymorphicFactory((_props, ref) => {
|
|
|
15336
15336
|
unstyled,
|
|
15337
15337
|
attributes,
|
|
15338
15338
|
vars,
|
|
15339
|
-
varsResolver: varsResolver$
|
|
15339
|
+
varsResolver: varsResolver$I
|
|
15340
15340
|
});
|
|
15341
15341
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
15342
15342
|
Box,
|
|
@@ -15349,7 +15349,7 @@ const Paper = polymorphicFactory((_props, ref) => {
|
|
|
15349
15349
|
}
|
|
15350
15350
|
);
|
|
15351
15351
|
});
|
|
15352
|
-
Paper.classes = classes$
|
|
15352
|
+
Paper.classes = classes$B;
|
|
15353
15353
|
Paper.displayName = "@mantine/core/Paper";
|
|
15354
15354
|
function horizontalSide(placement, arrowY, arrowOffset, arrowPosition) {
|
|
15355
15355
|
if (placement === "center" || arrowPosition === "center") {
|
|
@@ -15490,11 +15490,11 @@ function getFloatingPosition(dir, position2) {
|
|
|
15490
15490
|
}
|
|
15491
15491
|
return position2;
|
|
15492
15492
|
}
|
|
15493
|
-
var classes$
|
|
15494
|
-
const defaultProps$
|
|
15493
|
+
var classes$A = { "root": "m_9814e45f" };
|
|
15494
|
+
const defaultProps$L = {
|
|
15495
15495
|
zIndex: getDefaultZIndex("modal")
|
|
15496
15496
|
};
|
|
15497
|
-
const varsResolver$
|
|
15497
|
+
const varsResolver$H = createVarsResolver(
|
|
15498
15498
|
(_, { gradient, color: color2, backgroundOpacity, blur, radius, zIndex }) => ({
|
|
15499
15499
|
root: {
|
|
15500
15500
|
"--overlay-bg": gradient || (color2 !== void 0 || backgroundOpacity !== void 0) && rgba(color2 || "#000", backgroundOpacity ?? 0.6) || void 0,
|
|
@@ -15505,7 +15505,7 @@ const varsResolver$F = createVarsResolver(
|
|
|
15505
15505
|
})
|
|
15506
15506
|
);
|
|
15507
15507
|
const Overlay = polymorphicFactory((_props, ref) => {
|
|
15508
|
-
const props = useProps("Overlay", defaultProps$
|
|
15508
|
+
const props = useProps("Overlay", defaultProps$L, _props);
|
|
15509
15509
|
const {
|
|
15510
15510
|
classNames,
|
|
15511
15511
|
className,
|
|
@@ -15529,7 +15529,7 @@ const Overlay = polymorphicFactory((_props, ref) => {
|
|
|
15529
15529
|
const getStyles2 = useStyles({
|
|
15530
15530
|
name: "Overlay",
|
|
15531
15531
|
props,
|
|
15532
|
-
classes: classes$
|
|
15532
|
+
classes: classes$A,
|
|
15533
15533
|
className,
|
|
15534
15534
|
style: style2,
|
|
15535
15535
|
classNames,
|
|
@@ -15537,11 +15537,11 @@ const Overlay = polymorphicFactory((_props, ref) => {
|
|
|
15537
15537
|
unstyled,
|
|
15538
15538
|
attributes,
|
|
15539
15539
|
vars,
|
|
15540
|
-
varsResolver: varsResolver$
|
|
15540
|
+
varsResolver: varsResolver$H
|
|
15541
15541
|
});
|
|
15542
15542
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { ref, ...getStyles2("root"), mod: [{ center, fixed }, mod], ...others, children });
|
|
15543
15543
|
});
|
|
15544
|
-
Overlay.classes = classes$
|
|
15544
|
+
Overlay.classes = classes$A;
|
|
15545
15545
|
Overlay.displayName = "@mantine/core/Overlay";
|
|
15546
15546
|
function createPortalNode(props) {
|
|
15547
15547
|
const node2 = document.createElement("div");
|
|
@@ -15570,11 +15570,11 @@ function getTargetNode({ target, reuseTargetNode, ...others }) {
|
|
|
15570
15570
|
}
|
|
15571
15571
|
return createPortalNode(others);
|
|
15572
15572
|
}
|
|
15573
|
-
const defaultProps$
|
|
15573
|
+
const defaultProps$K = {
|
|
15574
15574
|
reuseTargetNode: true
|
|
15575
15575
|
};
|
|
15576
15576
|
const Portal = factory((props, ref) => {
|
|
15577
|
-
const { children, target, reuseTargetNode, ...others } = useProps("Portal", defaultProps$
|
|
15577
|
+
const { children, target, reuseTargetNode, ...others } = useProps("Portal", defaultProps$K, props);
|
|
15578
15578
|
const [mounted, setMounted] = reactExports.useState(false);
|
|
15579
15579
|
const nodeRef = reactExports.useRef(null);
|
|
15580
15580
|
useIsomorphicEffect(() => {
|
|
@@ -15905,7 +15905,7 @@ function FocusTrapInitialFocus(props) {
|
|
|
15905
15905
|
FocusTrap.displayName = "@mantine/core/FocusTrap";
|
|
15906
15906
|
FocusTrapInitialFocus.displayName = "@mantine/core/FocusTrapInitialFocus";
|
|
15907
15907
|
FocusTrap.InitialFocus = FocusTrapInitialFocus;
|
|
15908
|
-
var classes$
|
|
15908
|
+
var classes$z = { "dropdown": "m_38a85659", "arrow": "m_a31dc6c1", "overlay": "m_3d7bc908" };
|
|
15909
15909
|
const PopoverDropdown = factory((_props, ref) => {
|
|
15910
15910
|
var _a, _b, _c, _d;
|
|
15911
15911
|
const props = useProps("PopoverDropdown", null, _props);
|
|
@@ -16010,16 +16010,16 @@ const PopoverDropdown = factory((_props, ref) => {
|
|
|
16010
16010
|
}
|
|
16011
16011
|
) });
|
|
16012
16012
|
});
|
|
16013
|
-
PopoverDropdown.classes = classes$
|
|
16013
|
+
PopoverDropdown.classes = classes$z;
|
|
16014
16014
|
PopoverDropdown.displayName = "@mantine/core/PopoverDropdown";
|
|
16015
|
-
const defaultProps$
|
|
16015
|
+
const defaultProps$J = {
|
|
16016
16016
|
refProp: "ref",
|
|
16017
16017
|
popupType: "dialog"
|
|
16018
16018
|
};
|
|
16019
16019
|
const PopoverTarget = factory((props, ref) => {
|
|
16020
16020
|
const { children, refProp, popupType, ...others } = useProps(
|
|
16021
16021
|
"PopoverTarget",
|
|
16022
|
-
defaultProps$
|
|
16022
|
+
defaultProps$J,
|
|
16023
16023
|
props
|
|
16024
16024
|
);
|
|
16025
16025
|
if (!isElement$1(children)) {
|
|
@@ -16201,7 +16201,7 @@ function usePopover(options) {
|
|
|
16201
16201
|
onToggle
|
|
16202
16202
|
};
|
|
16203
16203
|
}
|
|
16204
|
-
const defaultProps$
|
|
16204
|
+
const defaultProps$I = {
|
|
16205
16205
|
position: "bottom",
|
|
16206
16206
|
offset: 8,
|
|
16207
16207
|
positionDependencies: [],
|
|
@@ -16224,7 +16224,7 @@ const defaultProps$E = {
|
|
|
16224
16224
|
__staticSelector: "Popover",
|
|
16225
16225
|
width: "max-content"
|
|
16226
16226
|
};
|
|
16227
|
-
const varsResolver$
|
|
16227
|
+
const varsResolver$G = createVarsResolver((_, { radius, shadow }) => ({
|
|
16228
16228
|
dropdown: {
|
|
16229
16229
|
"--popover-radius": radius === void 0 ? void 0 : getRadius(radius),
|
|
16230
16230
|
"--popover-shadow": getShadow(shadow)
|
|
@@ -16232,7 +16232,7 @@ const varsResolver$E = createVarsResolver((_, { radius, shadow }) => ({
|
|
|
16232
16232
|
}));
|
|
16233
16233
|
function Popover(_props) {
|
|
16234
16234
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
16235
|
-
const props = useProps("Popover", defaultProps$
|
|
16235
|
+
const props = useProps("Popover", defaultProps$I, _props);
|
|
16236
16236
|
const {
|
|
16237
16237
|
children,
|
|
16238
16238
|
position: position2,
|
|
@@ -16288,14 +16288,14 @@ function Popover(_props) {
|
|
|
16288
16288
|
const getStyles2 = useStyles({
|
|
16289
16289
|
name: __staticSelector,
|
|
16290
16290
|
props,
|
|
16291
|
-
classes: classes$
|
|
16291
|
+
classes: classes$z,
|
|
16292
16292
|
classNames,
|
|
16293
16293
|
styles: styles2,
|
|
16294
16294
|
unstyled,
|
|
16295
16295
|
attributes,
|
|
16296
16296
|
rootSelector: "dropdown",
|
|
16297
16297
|
vars,
|
|
16298
|
-
varsResolver: varsResolver$
|
|
16298
|
+
varsResolver: varsResolver$G
|
|
16299
16299
|
});
|
|
16300
16300
|
const { resolvedStyles } = useResolvedStylesApi({ classNames, styles: styles2, props });
|
|
16301
16301
|
const [dropdownVisible, setDropdownVisible] = reactExports.useState(opened ?? defaultOpened ?? false);
|
|
@@ -16442,38 +16442,38 @@ Popover.Target = PopoverTarget;
|
|
|
16442
16442
|
Popover.Dropdown = PopoverDropdown;
|
|
16443
16443
|
Popover.displayName = "@mantine/core/Popover";
|
|
16444
16444
|
Popover.extend = (input) => input;
|
|
16445
|
-
var classes$
|
|
16446
|
-
const Bars = reactExports.forwardRef(({ className, ...others }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { component: "span", className: clsx(classes$
|
|
16447
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$
|
|
16448
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$
|
|
16449
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$
|
|
16445
|
+
var classes$y = { "root": "m_5ae2e3c", "barsLoader": "m_7a2bd4cd", "bar": "m_870bb79", "bars-loader-animation": "m_5d2b3b9d", "dotsLoader": "m_4e3f22d7", "dot": "m_870c4af", "loader-dots-animation": "m_aac34a1", "ovalLoader": "m_b34414df", "oval-loader-animation": "m_f8e89c4b" };
|
|
16446
|
+
const Bars = reactExports.forwardRef(({ className, ...others }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { component: "span", className: clsx(classes$y.barsLoader, className), ...others, ref, children: [
|
|
16447
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$y.bar }),
|
|
16448
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$y.bar }),
|
|
16449
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$y.bar })
|
|
16450
16450
|
] }));
|
|
16451
16451
|
Bars.displayName = "@mantine/core/Bars";
|
|
16452
|
-
const Dots = reactExports.forwardRef(({ className, ...others }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { component: "span", className: clsx(classes$
|
|
16453
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$
|
|
16454
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$
|
|
16455
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$
|
|
16452
|
+
const Dots = reactExports.forwardRef(({ className, ...others }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { component: "span", className: clsx(classes$y.dotsLoader, className), ...others, ref, children: [
|
|
16453
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$y.dot }),
|
|
16454
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$y.dot }),
|
|
16455
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$y.dot })
|
|
16456
16456
|
] }));
|
|
16457
16457
|
Dots.displayName = "@mantine/core/Dots";
|
|
16458
|
-
const Oval = reactExports.forwardRef(({ className, ...others }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { component: "span", className: clsx(classes$
|
|
16458
|
+
const Oval = reactExports.forwardRef(({ className, ...others }, ref) => /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { component: "span", className: clsx(classes$y.ovalLoader, className), ...others, ref }));
|
|
16459
16459
|
Oval.displayName = "@mantine/core/Oval";
|
|
16460
16460
|
const defaultLoaders = {
|
|
16461
16461
|
bars: Bars,
|
|
16462
16462
|
oval: Oval,
|
|
16463
16463
|
dots: Dots
|
|
16464
16464
|
};
|
|
16465
|
-
const defaultProps$
|
|
16465
|
+
const defaultProps$H = {
|
|
16466
16466
|
loaders: defaultLoaders,
|
|
16467
16467
|
type: "oval"
|
|
16468
16468
|
};
|
|
16469
|
-
const varsResolver$
|
|
16469
|
+
const varsResolver$F = createVarsResolver((theme2, { size: size2, color: color2 }) => ({
|
|
16470
16470
|
root: {
|
|
16471
16471
|
"--loader-size": getSize(size2, "loader-size"),
|
|
16472
16472
|
"--loader-color": color2 ? getThemeColor(color2, theme2) : void 0
|
|
16473
16473
|
}
|
|
16474
16474
|
}));
|
|
16475
16475
|
const Loader = factory((_props, ref) => {
|
|
16476
|
-
const props = useProps("Loader", defaultProps$
|
|
16476
|
+
const props = useProps("Loader", defaultProps$H, _props);
|
|
16477
16477
|
const {
|
|
16478
16478
|
size: size2,
|
|
16479
16479
|
color: color2,
|
|
@@ -16493,7 +16493,7 @@ const Loader = factory((_props, ref) => {
|
|
|
16493
16493
|
const getStyles2 = useStyles({
|
|
16494
16494
|
name: "Loader",
|
|
16495
16495
|
props,
|
|
16496
|
-
classes: classes$
|
|
16496
|
+
classes: classes$y,
|
|
16497
16497
|
className,
|
|
16498
16498
|
style: style2,
|
|
16499
16499
|
classNames,
|
|
@@ -16501,7 +16501,7 @@ const Loader = factory((_props, ref) => {
|
|
|
16501
16501
|
unstyled,
|
|
16502
16502
|
attributes,
|
|
16503
16503
|
vars,
|
|
16504
|
-
varsResolver: varsResolver$
|
|
16504
|
+
varsResolver: varsResolver$F
|
|
16505
16505
|
});
|
|
16506
16506
|
if (children) {
|
|
16507
16507
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { ...getStyles2("root"), ref, ...others, children });
|
|
@@ -16519,17 +16519,17 @@ const Loader = factory((_props, ref) => {
|
|
|
16519
16519
|
);
|
|
16520
16520
|
});
|
|
16521
16521
|
Loader.defaultLoaders = defaultLoaders;
|
|
16522
|
-
Loader.classes = classes$
|
|
16522
|
+
Loader.classes = classes$y;
|
|
16523
16523
|
Loader.displayName = "@mantine/core/Loader";
|
|
16524
|
-
var classes$
|
|
16525
|
-
const defaultProps$
|
|
16524
|
+
var classes$x = { "root": "m_8d3f4000", "icon": "m_8d3afb97", "loader": "m_302b9fb1", "group": "m_1a0f1b21", "groupSection": "m_437b6484" };
|
|
16525
|
+
const defaultProps$G = {
|
|
16526
16526
|
orientation: "horizontal"
|
|
16527
16527
|
};
|
|
16528
|
-
const varsResolver$
|
|
16528
|
+
const varsResolver$E = createVarsResolver((_, { borderWidth }) => ({
|
|
16529
16529
|
group: { "--ai-border-width": rem(borderWidth) }
|
|
16530
16530
|
}));
|
|
16531
16531
|
const ActionIconGroup = factory((_props, ref) => {
|
|
16532
|
-
const props = useProps("ActionIconGroup", defaultProps$
|
|
16532
|
+
const props = useProps("ActionIconGroup", defaultProps$G, _props);
|
|
16533
16533
|
const {
|
|
16534
16534
|
className,
|
|
16535
16535
|
style: style2,
|
|
@@ -16543,11 +16543,11 @@ const ActionIconGroup = factory((_props, ref) => {
|
|
|
16543
16543
|
mod,
|
|
16544
16544
|
attributes,
|
|
16545
16545
|
...others
|
|
16546
|
-
} = useProps("ActionIconGroup", defaultProps$
|
|
16546
|
+
} = useProps("ActionIconGroup", defaultProps$G, _props);
|
|
16547
16547
|
const getStyles2 = useStyles({
|
|
16548
16548
|
name: "ActionIconGroup",
|
|
16549
16549
|
props,
|
|
16550
|
-
classes: classes$
|
|
16550
|
+
classes: classes$x,
|
|
16551
16551
|
className,
|
|
16552
16552
|
style: style2,
|
|
16553
16553
|
classNames,
|
|
@@ -16555,7 +16555,7 @@ const ActionIconGroup = factory((_props, ref) => {
|
|
|
16555
16555
|
unstyled,
|
|
16556
16556
|
attributes,
|
|
16557
16557
|
vars,
|
|
16558
|
-
varsResolver: varsResolver$
|
|
16558
|
+
varsResolver: varsResolver$E,
|
|
16559
16559
|
rootSelector: "group"
|
|
16560
16560
|
});
|
|
16561
16561
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -16570,9 +16570,9 @@ const ActionIconGroup = factory((_props, ref) => {
|
|
|
16570
16570
|
}
|
|
16571
16571
|
);
|
|
16572
16572
|
});
|
|
16573
|
-
ActionIconGroup.classes = classes$
|
|
16573
|
+
ActionIconGroup.classes = classes$x;
|
|
16574
16574
|
ActionIconGroup.displayName = "@mantine/core/ActionIconGroup";
|
|
16575
|
-
const varsResolver$
|
|
16575
|
+
const varsResolver$D = createVarsResolver(
|
|
16576
16576
|
(theme2, { radius, color: color2, gradient, variant, autoContrast, size: size2 }) => {
|
|
16577
16577
|
const colors = theme2.variantColorResolver({
|
|
16578
16578
|
color: color2 || theme2.primaryColor,
|
|
@@ -16613,7 +16613,7 @@ const ActionIconGroupSection = factory((_props, ref) => {
|
|
|
16613
16613
|
const getStyles2 = useStyles({
|
|
16614
16614
|
name: "ActionIconGroupSection",
|
|
16615
16615
|
props,
|
|
16616
|
-
classes: classes$
|
|
16616
|
+
classes: classes$x,
|
|
16617
16617
|
className,
|
|
16618
16618
|
style: style2,
|
|
16619
16619
|
classNames,
|
|
@@ -16621,14 +16621,14 @@ const ActionIconGroupSection = factory((_props, ref) => {
|
|
|
16621
16621
|
unstyled,
|
|
16622
16622
|
attributes,
|
|
16623
16623
|
vars,
|
|
16624
|
-
varsResolver: varsResolver$
|
|
16624
|
+
varsResolver: varsResolver$D,
|
|
16625
16625
|
rootSelector: "groupSection"
|
|
16626
16626
|
});
|
|
16627
16627
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { ...getStyles2("groupSection"), ref, variant, ...others });
|
|
16628
16628
|
});
|
|
16629
|
-
ActionIconGroupSection.classes = classes$
|
|
16629
|
+
ActionIconGroupSection.classes = classes$x;
|
|
16630
16630
|
ActionIconGroupSection.displayName = "@mantine/core/ActionIconGroupSection";
|
|
16631
|
-
const varsResolver$
|
|
16631
|
+
const varsResolver$C = createVarsResolver(
|
|
16632
16632
|
(theme2, { size: size2, radius, variant, gradient, color: color2, autoContrast }) => {
|
|
16633
16633
|
const colors = theme2.variantColorResolver({
|
|
16634
16634
|
color: color2 || theme2.primaryColor,
|
|
@@ -16680,13 +16680,13 @@ const ActionIcon = polymorphicFactory((_props, ref) => {
|
|
|
16680
16680
|
props,
|
|
16681
16681
|
className,
|
|
16682
16682
|
style: style2,
|
|
16683
|
-
classes: classes$
|
|
16683
|
+
classes: classes$x,
|
|
16684
16684
|
classNames,
|
|
16685
16685
|
styles: styles2,
|
|
16686
16686
|
unstyled,
|
|
16687
16687
|
attributes,
|
|
16688
16688
|
vars,
|
|
16689
|
-
varsResolver: varsResolver$
|
|
16689
|
+
varsResolver: varsResolver$C
|
|
16690
16690
|
});
|
|
16691
16691
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
16692
16692
|
UnstyledButton,
|
|
@@ -16706,7 +16706,7 @@ const ActionIcon = polymorphicFactory((_props, ref) => {
|
|
|
16706
16706
|
}
|
|
16707
16707
|
);
|
|
16708
16708
|
});
|
|
16709
|
-
ActionIcon.classes = classes$
|
|
16709
|
+
ActionIcon.classes = classes$x;
|
|
16710
16710
|
ActionIcon.displayName = "@mantine/core/ActionIcon";
|
|
16711
16711
|
ActionIcon.Group = ActionIconGroup;
|
|
16712
16712
|
ActionIcon.GroupSection = ActionIconGroupSection;
|
|
@@ -16733,11 +16733,11 @@ const CloseIcon = reactExports.forwardRef(
|
|
|
16733
16733
|
)
|
|
16734
16734
|
);
|
|
16735
16735
|
CloseIcon.displayName = "@mantine/core/CloseIcon";
|
|
16736
|
-
var classes$
|
|
16737
|
-
const defaultProps$
|
|
16736
|
+
var classes$w = { "root": "m_86a44da5", "root--subtle": "m_220c80f2" };
|
|
16737
|
+
const defaultProps$F = {
|
|
16738
16738
|
variant: "subtle"
|
|
16739
16739
|
};
|
|
16740
|
-
const varsResolver$
|
|
16740
|
+
const varsResolver$B = createVarsResolver((_, { size: size2, radius, iconSize }) => ({
|
|
16741
16741
|
root: {
|
|
16742
16742
|
"--cb-size": getSize(size2, "cb-size"),
|
|
16743
16743
|
"--cb-radius": radius === void 0 ? void 0 : getRadius(radius),
|
|
@@ -16745,7 +16745,7 @@ const varsResolver$z = createVarsResolver((_, { size: size2, radius, iconSize })
|
|
|
16745
16745
|
}
|
|
16746
16746
|
}));
|
|
16747
16747
|
const CloseButton = polymorphicFactory((_props, ref) => {
|
|
16748
|
-
const props = useProps("CloseButton", defaultProps$
|
|
16748
|
+
const props = useProps("CloseButton", defaultProps$F, _props);
|
|
16749
16749
|
const {
|
|
16750
16750
|
iconSize,
|
|
16751
16751
|
children,
|
|
@@ -16770,13 +16770,13 @@ const CloseButton = polymorphicFactory((_props, ref) => {
|
|
|
16770
16770
|
props,
|
|
16771
16771
|
className,
|
|
16772
16772
|
style: style2,
|
|
16773
|
-
classes: classes$
|
|
16773
|
+
classes: classes$w,
|
|
16774
16774
|
classNames,
|
|
16775
16775
|
styles: styles2,
|
|
16776
16776
|
unstyled,
|
|
16777
16777
|
attributes,
|
|
16778
16778
|
vars,
|
|
16779
|
-
varsResolver: varsResolver$
|
|
16779
|
+
varsResolver: varsResolver$B
|
|
16780
16780
|
});
|
|
16781
16781
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
16782
16782
|
UnstyledButton,
|
|
@@ -16795,20 +16795,20 @@ const CloseButton = polymorphicFactory((_props, ref) => {
|
|
|
16795
16795
|
}
|
|
16796
16796
|
);
|
|
16797
16797
|
});
|
|
16798
|
-
CloseButton.classes = classes$
|
|
16798
|
+
CloseButton.classes = classes$w;
|
|
16799
16799
|
CloseButton.displayName = "@mantine/core/CloseButton";
|
|
16800
16800
|
function filterFalsyChildren(children) {
|
|
16801
16801
|
return reactExports.Children.toArray(children).filter(Boolean);
|
|
16802
16802
|
}
|
|
16803
|
-
var classes$
|
|
16804
|
-
const defaultProps$
|
|
16803
|
+
var classes$v = { "root": "m_4081bf90" };
|
|
16804
|
+
const defaultProps$E = {
|
|
16805
16805
|
preventGrowOverflow: true,
|
|
16806
16806
|
gap: "md",
|
|
16807
16807
|
align: "center",
|
|
16808
16808
|
justify: "flex-start",
|
|
16809
16809
|
wrap: "wrap"
|
|
16810
16810
|
};
|
|
16811
|
-
const varsResolver$
|
|
16811
|
+
const varsResolver$A = createVarsResolver(
|
|
16812
16812
|
(_, { grow, preventGrowOverflow, gap, align, justify, wrap: wrap2 }, { childWidth }) => ({
|
|
16813
16813
|
root: {
|
|
16814
16814
|
"--group-child-width": grow && preventGrowOverflow ? childWidth : void 0,
|
|
@@ -16820,7 +16820,7 @@ const varsResolver$y = createVarsResolver(
|
|
|
16820
16820
|
})
|
|
16821
16821
|
);
|
|
16822
16822
|
const Group = factory((_props, ref) => {
|
|
16823
|
-
const props = useProps("Group", defaultProps$
|
|
16823
|
+
const props = useProps("Group", defaultProps$E, _props);
|
|
16824
16824
|
const {
|
|
16825
16825
|
classNames,
|
|
16826
16826
|
className,
|
|
@@ -16852,13 +16852,13 @@ const Group = factory((_props, ref) => {
|
|
|
16852
16852
|
stylesCtx,
|
|
16853
16853
|
className,
|
|
16854
16854
|
style: style2,
|
|
16855
|
-
classes: classes$
|
|
16855
|
+
classes: classes$v,
|
|
16856
16856
|
classNames,
|
|
16857
16857
|
styles: styles2,
|
|
16858
16858
|
unstyled,
|
|
16859
16859
|
attributes,
|
|
16860
16860
|
vars,
|
|
16861
|
-
varsResolver: varsResolver$
|
|
16861
|
+
varsResolver: varsResolver$A
|
|
16862
16862
|
});
|
|
16863
16863
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16864
16864
|
Box,
|
|
@@ -16873,7 +16873,7 @@ const Group = factory((_props, ref) => {
|
|
|
16873
16873
|
}
|
|
16874
16874
|
);
|
|
16875
16875
|
});
|
|
16876
|
-
Group.classes = classes$
|
|
16876
|
+
Group.classes = classes$v;
|
|
16877
16877
|
Group.displayName = "@mantine/core/Group";
|
|
16878
16878
|
const [ModalBaseProvider, useModalBaseContext] = createSafeContext(
|
|
16879
16879
|
"ModalBase component was not found in tree"
|
|
@@ -17014,7 +17014,7 @@ function useModalBodyId() {
|
|
|
17014
17014
|
}, []);
|
|
17015
17015
|
return ctx.getBodyId();
|
|
17016
17016
|
}
|
|
17017
|
-
var classes$
|
|
17017
|
+
var classes$u = { "title": "m_615af6c9", "header": "m_b5489c3c", "inner": "m_60c222c7", "content": "m_fd1ab0aa", "close": "m_606cb269", "body": "m_5df29311" };
|
|
17018
17018
|
const ModalBaseBody = reactExports.forwardRef(
|
|
17019
17019
|
({ className, ...others }, ref) => {
|
|
17020
17020
|
const bodyId = useModalBodyId();
|
|
@@ -17025,7 +17025,7 @@ const ModalBaseBody = reactExports.forwardRef(
|
|
|
17025
17025
|
ref,
|
|
17026
17026
|
...others,
|
|
17027
17027
|
id: bodyId,
|
|
17028
|
-
className: clsx({ [classes$
|
|
17028
|
+
className: clsx({ [classes$u.body]: !ctx.unstyled }, className)
|
|
17029
17029
|
}
|
|
17030
17030
|
);
|
|
17031
17031
|
}
|
|
@@ -17043,7 +17043,7 @@ const ModalBaseCloseButton = reactExports.forwardRef(
|
|
|
17043
17043
|
ctx.onClose();
|
|
17044
17044
|
onClick == null ? void 0 : onClick(event);
|
|
17045
17045
|
},
|
|
17046
|
-
className: clsx({ [classes$
|
|
17046
|
+
className: clsx({ [classes$u.close]: !ctx.unstyled }, className),
|
|
17047
17047
|
unstyled: ctx.unstyled
|
|
17048
17048
|
}
|
|
17049
17049
|
);
|
|
@@ -17074,7 +17074,7 @@ const ModalBaseContent = reactExports.forwardRef(
|
|
|
17074
17074
|
"div",
|
|
17075
17075
|
{
|
|
17076
17076
|
...innerProps,
|
|
17077
|
-
className: clsx({ [classes$
|
|
17077
|
+
className: clsx({ [classes$u.inner]: !ctx.unstyled }, innerProps.className),
|
|
17078
17078
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(FocusTrap, { active: ctx.opened && ctx.trapFocus, innerRef: ref, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
17079
17079
|
Paper,
|
|
17080
17080
|
{
|
|
@@ -17086,7 +17086,7 @@ const ModalBaseContent = reactExports.forwardRef(
|
|
|
17086
17086
|
"aria-describedby": ctx.bodyMounted ? ctx.getBodyId() : void 0,
|
|
17087
17087
|
"aria-labelledby": ctx.titleMounted ? ctx.getTitleId() : void 0,
|
|
17088
17088
|
style: [style2, transitionStyles],
|
|
17089
|
-
className: clsx({ [classes$
|
|
17089
|
+
className: clsx({ [classes$u.content]: !ctx.unstyled }, className),
|
|
17090
17090
|
unstyled: ctx.unstyled,
|
|
17091
17091
|
children: others.children
|
|
17092
17092
|
}
|
|
@@ -17106,7 +17106,7 @@ const ModalBaseHeader = reactExports.forwardRef(
|
|
|
17106
17106
|
{
|
|
17107
17107
|
component: "header",
|
|
17108
17108
|
ref,
|
|
17109
|
-
className: clsx({ [classes$
|
|
17109
|
+
className: clsx({ [classes$u.header]: !ctx.unstyled }, className),
|
|
17110
17110
|
...others
|
|
17111
17111
|
}
|
|
17112
17112
|
);
|
|
@@ -17169,7 +17169,7 @@ const ModalBaseTitle = reactExports.forwardRef(
|
|
|
17169
17169
|
{
|
|
17170
17170
|
component: "h2",
|
|
17171
17171
|
ref,
|
|
17172
|
-
className: clsx({ [classes$
|
|
17172
|
+
className: clsx({ [classes$u.title]: !ctx.unstyled }, className),
|
|
17173
17173
|
...others,
|
|
17174
17174
|
id
|
|
17175
17175
|
}
|
|
@@ -17214,8 +17214,8 @@ const [InputWrapperProvider, useInputWrapperContext] = createOptionalContext({
|
|
|
17214
17214
|
inputId: void 0,
|
|
17215
17215
|
labelId: void 0
|
|
17216
17216
|
});
|
|
17217
|
-
var classes$
|
|
17218
|
-
const varsResolver$
|
|
17217
|
+
var classes$t = { "wrapper": "m_6c018570", "input": "m_8fb7ebe7", "section": "m_82577fc2", "placeholder": "m_88bacfd0", "root": "m_46b77525", "label": "m_8fdc1311", "required": "m_78a94662", "error": "m_8f816625", "description": "m_fe47ce59" };
|
|
17218
|
+
const varsResolver$z = createVarsResolver((_, { size: size2 }) => ({
|
|
17219
17219
|
description: {
|
|
17220
17220
|
"--input-description-size": size2 === void 0 ? void 0 : `calc(${getFontSize(size2)} - ${rem(2)})`
|
|
17221
17221
|
}
|
|
@@ -17240,7 +17240,7 @@ const InputDescription = factory((_props, ref) => {
|
|
|
17240
17240
|
const _getStyles = useStyles({
|
|
17241
17241
|
name: ["InputWrapper", __staticSelector],
|
|
17242
17242
|
props,
|
|
17243
|
-
classes: classes$
|
|
17243
|
+
classes: classes$t,
|
|
17244
17244
|
className,
|
|
17245
17245
|
style: style2,
|
|
17246
17246
|
classNames,
|
|
@@ -17249,7 +17249,7 @@ const InputDescription = factory((_props, ref) => {
|
|
|
17249
17249
|
attributes,
|
|
17250
17250
|
rootSelector: "description",
|
|
17251
17251
|
vars,
|
|
17252
|
-
varsResolver: varsResolver$
|
|
17252
|
+
varsResolver: varsResolver$z
|
|
17253
17253
|
});
|
|
17254
17254
|
const getStyles2 = __inheritStyles && (ctx == null ? void 0 : ctx.getStyles) || _getStyles;
|
|
17255
17255
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -17264,9 +17264,9 @@ const InputDescription = factory((_props, ref) => {
|
|
|
17264
17264
|
}
|
|
17265
17265
|
);
|
|
17266
17266
|
});
|
|
17267
|
-
InputDescription.classes = classes$
|
|
17267
|
+
InputDescription.classes = classes$t;
|
|
17268
17268
|
InputDescription.displayName = "@mantine/core/InputDescription";
|
|
17269
|
-
const varsResolver$
|
|
17269
|
+
const varsResolver$y = createVarsResolver((_, { size: size2 }) => ({
|
|
17270
17270
|
error: {
|
|
17271
17271
|
"--input-error-size": size2 === void 0 ? void 0 : `calc(${getFontSize(size2)} - ${rem(2)})`
|
|
17272
17272
|
}
|
|
@@ -17290,7 +17290,7 @@ const InputError = factory((_props, ref) => {
|
|
|
17290
17290
|
const _getStyles = useStyles({
|
|
17291
17291
|
name: ["InputWrapper", __staticSelector],
|
|
17292
17292
|
props,
|
|
17293
|
-
classes: classes$
|
|
17293
|
+
classes: classes$t,
|
|
17294
17294
|
className,
|
|
17295
17295
|
style: style2,
|
|
17296
17296
|
classNames,
|
|
@@ -17299,7 +17299,7 @@ const InputError = factory((_props, ref) => {
|
|
|
17299
17299
|
attributes,
|
|
17300
17300
|
rootSelector: "error",
|
|
17301
17301
|
vars,
|
|
17302
|
-
varsResolver: varsResolver$
|
|
17302
|
+
varsResolver: varsResolver$y
|
|
17303
17303
|
});
|
|
17304
17304
|
const ctx = useInputWrapperContext();
|
|
17305
17305
|
const getStyles2 = __inheritStyles && (ctx == null ? void 0 : ctx.getStyles) || _getStyles;
|
|
@@ -17315,19 +17315,19 @@ const InputError = factory((_props, ref) => {
|
|
|
17315
17315
|
}
|
|
17316
17316
|
);
|
|
17317
17317
|
});
|
|
17318
|
-
InputError.classes = classes$
|
|
17318
|
+
InputError.classes = classes$t;
|
|
17319
17319
|
InputError.displayName = "@mantine/core/InputError";
|
|
17320
|
-
const defaultProps$
|
|
17320
|
+
const defaultProps$D = {
|
|
17321
17321
|
labelElement: "label"
|
|
17322
17322
|
};
|
|
17323
|
-
const varsResolver$
|
|
17323
|
+
const varsResolver$x = createVarsResolver((_, { size: size2 }) => ({
|
|
17324
17324
|
label: {
|
|
17325
17325
|
"--input-label-size": getFontSize(size2),
|
|
17326
17326
|
"--input-asterisk-color": void 0
|
|
17327
17327
|
}
|
|
17328
17328
|
}));
|
|
17329
17329
|
const InputLabel = factory((_props, ref) => {
|
|
17330
|
-
const props = useProps("InputLabel", defaultProps$
|
|
17330
|
+
const props = useProps("InputLabel", defaultProps$D, _props);
|
|
17331
17331
|
const {
|
|
17332
17332
|
classNames,
|
|
17333
17333
|
className,
|
|
@@ -17346,11 +17346,11 @@ const InputLabel = factory((_props, ref) => {
|
|
|
17346
17346
|
mod,
|
|
17347
17347
|
attributes,
|
|
17348
17348
|
...others
|
|
17349
|
-
} = useProps("InputLabel", defaultProps$
|
|
17349
|
+
} = useProps("InputLabel", defaultProps$D, props);
|
|
17350
17350
|
const _getStyles = useStyles({
|
|
17351
17351
|
name: ["InputWrapper", __staticSelector],
|
|
17352
17352
|
props,
|
|
17353
|
-
classes: classes$
|
|
17353
|
+
classes: classes$t,
|
|
17354
17354
|
className,
|
|
17355
17355
|
style: style2,
|
|
17356
17356
|
classNames,
|
|
@@ -17359,7 +17359,7 @@ const InputLabel = factory((_props, ref) => {
|
|
|
17359
17359
|
attributes,
|
|
17360
17360
|
rootSelector: "label",
|
|
17361
17361
|
vars,
|
|
17362
|
-
varsResolver: varsResolver$
|
|
17362
|
+
varsResolver: varsResolver$x
|
|
17363
17363
|
});
|
|
17364
17364
|
const ctx = useInputWrapperContext();
|
|
17365
17365
|
const getStyles2 = (ctx == null ? void 0 : ctx.getStyles) || _getStyles;
|
|
@@ -17387,7 +17387,7 @@ const InputLabel = factory((_props, ref) => {
|
|
|
17387
17387
|
}
|
|
17388
17388
|
);
|
|
17389
17389
|
});
|
|
17390
|
-
InputLabel.classes = classes$
|
|
17390
|
+
InputLabel.classes = classes$t;
|
|
17391
17391
|
InputLabel.displayName = "@mantine/core/InputLabel";
|
|
17392
17392
|
const InputPlaceholder = factory((_props, ref) => {
|
|
17393
17393
|
const props = useProps("InputPlaceholder", null, _props);
|
|
@@ -17408,7 +17408,7 @@ const InputPlaceholder = factory((_props, ref) => {
|
|
|
17408
17408
|
const getStyles2 = useStyles({
|
|
17409
17409
|
name: ["InputPlaceholder", __staticSelector],
|
|
17410
17410
|
props,
|
|
17411
|
-
classes: classes$
|
|
17411
|
+
classes: classes$t,
|
|
17412
17412
|
className,
|
|
17413
17413
|
style: style2,
|
|
17414
17414
|
classNames,
|
|
@@ -17429,7 +17429,7 @@ const InputPlaceholder = factory((_props, ref) => {
|
|
|
17429
17429
|
}
|
|
17430
17430
|
);
|
|
17431
17431
|
});
|
|
17432
|
-
InputPlaceholder.classes = classes$
|
|
17432
|
+
InputPlaceholder.classes = classes$t;
|
|
17433
17433
|
InputPlaceholder.displayName = "@mantine/core/InputPlaceholder";
|
|
17434
17434
|
function getInputOffsets(inputWrapperOrder, { hasDescription, hasError }) {
|
|
17435
17435
|
const inputIndex = inputWrapperOrder.findIndex((part) => part === "input");
|
|
@@ -17439,12 +17439,12 @@ function getInputOffsets(inputWrapperOrder, { hasDescription, hasError }) {
|
|
|
17439
17439
|
const offsetBottom = hasDescription && belowInput.includes("description") || hasError && belowInput.includes("error");
|
|
17440
17440
|
return { offsetBottom, offsetTop };
|
|
17441
17441
|
}
|
|
17442
|
-
const defaultProps$
|
|
17442
|
+
const defaultProps$C = {
|
|
17443
17443
|
labelElement: "label",
|
|
17444
17444
|
inputContainer: (children) => children,
|
|
17445
17445
|
inputWrapperOrder: ["label", "description", "input", "error"]
|
|
17446
17446
|
};
|
|
17447
|
-
const varsResolver$
|
|
17447
|
+
const varsResolver$w = createVarsResolver((_, { size: size2 }) => ({
|
|
17448
17448
|
label: {
|
|
17449
17449
|
"--input-label-size": getFontSize(size2),
|
|
17450
17450
|
"--input-asterisk-color": void 0
|
|
@@ -17457,7 +17457,7 @@ const varsResolver$u = createVarsResolver((_, { size: size2 }) => ({
|
|
|
17457
17457
|
}
|
|
17458
17458
|
}));
|
|
17459
17459
|
const InputWrapper = factory((_props, ref) => {
|
|
17460
|
-
const props = useProps("InputWrapper", defaultProps$
|
|
17460
|
+
const props = useProps("InputWrapper", defaultProps$C, _props);
|
|
17461
17461
|
const {
|
|
17462
17462
|
classNames,
|
|
17463
17463
|
className,
|
|
@@ -17489,7 +17489,7 @@ const InputWrapper = factory((_props, ref) => {
|
|
|
17489
17489
|
const getStyles2 = useStyles({
|
|
17490
17490
|
name: ["InputWrapper", __staticSelector],
|
|
17491
17491
|
props: __stylesApiProps || props,
|
|
17492
|
-
classes: classes$
|
|
17492
|
+
classes: classes$t,
|
|
17493
17493
|
className,
|
|
17494
17494
|
style: style2,
|
|
17495
17495
|
classNames,
|
|
@@ -17497,7 +17497,7 @@ const InputWrapper = factory((_props, ref) => {
|
|
|
17497
17497
|
unstyled,
|
|
17498
17498
|
attributes,
|
|
17499
17499
|
vars,
|
|
17500
|
-
varsResolver: varsResolver$
|
|
17500
|
+
varsResolver: varsResolver$w
|
|
17501
17501
|
});
|
|
17502
17502
|
const sharedProps = {
|
|
17503
17503
|
size: size2,
|
|
@@ -17589,16 +17589,16 @@ const InputWrapper = factory((_props, ref) => {
|
|
|
17589
17589
|
}
|
|
17590
17590
|
);
|
|
17591
17591
|
});
|
|
17592
|
-
InputWrapper.classes = classes$
|
|
17592
|
+
InputWrapper.classes = classes$t;
|
|
17593
17593
|
InputWrapper.displayName = "@mantine/core/InputWrapper";
|
|
17594
|
-
const defaultProps$
|
|
17594
|
+
const defaultProps$B = {
|
|
17595
17595
|
variant: "default",
|
|
17596
17596
|
leftSectionPointerEvents: "none",
|
|
17597
17597
|
rightSectionPointerEvents: "none",
|
|
17598
17598
|
withAria: true,
|
|
17599
17599
|
withErrorStyles: true
|
|
17600
17600
|
};
|
|
17601
|
-
const varsResolver$
|
|
17601
|
+
const varsResolver$v = createVarsResolver((_, props, ctx) => ({
|
|
17602
17602
|
wrapper: {
|
|
17603
17603
|
"--input-margin-top": ctx.offsetTop ? "calc(var(--mantine-spacing-xs) / 2)" : void 0,
|
|
17604
17604
|
"--input-margin-bottom": ctx.offsetBottom ? "calc(var(--mantine-spacing-xs) / 2)" : void 0,
|
|
@@ -17613,7 +17613,7 @@ const varsResolver$t = createVarsResolver((_, props, ctx) => ({
|
|
|
17613
17613
|
}
|
|
17614
17614
|
}));
|
|
17615
17615
|
const Input = polymorphicFactory((_props, ref) => {
|
|
17616
|
-
const props = useProps("Input", defaultProps$
|
|
17616
|
+
const props = useProps("Input", defaultProps$B, _props);
|
|
17617
17617
|
const {
|
|
17618
17618
|
classNames,
|
|
17619
17619
|
className,
|
|
@@ -17657,7 +17657,7 @@ const Input = polymorphicFactory((_props, ref) => {
|
|
|
17657
17657
|
const getStyles2 = useStyles({
|
|
17658
17658
|
name: ["Input", __staticSelector],
|
|
17659
17659
|
props: __stylesApiProps || props,
|
|
17660
|
-
classes: classes$
|
|
17660
|
+
classes: classes$t,
|
|
17661
17661
|
className,
|
|
17662
17662
|
style: style2,
|
|
17663
17663
|
classNames,
|
|
@@ -17667,7 +17667,7 @@ const Input = polymorphicFactory((_props, ref) => {
|
|
|
17667
17667
|
stylesCtx,
|
|
17668
17668
|
rootSelector: "wrapper",
|
|
17669
17669
|
vars,
|
|
17670
|
-
varsResolver: varsResolver$
|
|
17670
|
+
varsResolver: varsResolver$v
|
|
17671
17671
|
});
|
|
17672
17672
|
const ariaAttributes = withAria ? {
|
|
17673
17673
|
required,
|
|
@@ -17739,7 +17739,7 @@ const Input = polymorphicFactory((_props, ref) => {
|
|
|
17739
17739
|
}
|
|
17740
17740
|
) });
|
|
17741
17741
|
});
|
|
17742
|
-
Input.classes = classes$
|
|
17742
|
+
Input.classes = classes$t;
|
|
17743
17743
|
Input.Wrapper = InputWrapper;
|
|
17744
17744
|
Input.Label = InputLabel;
|
|
17745
17745
|
Input.Error = InputError;
|
|
@@ -17823,12 +17823,12 @@ function useInputProps(component, defaultProps2, _props) {
|
|
|
17823
17823
|
}
|
|
17824
17824
|
};
|
|
17825
17825
|
}
|
|
17826
|
-
const defaultProps$
|
|
17826
|
+
const defaultProps$A = {
|
|
17827
17827
|
__staticSelector: "InputBase",
|
|
17828
17828
|
withAria: true
|
|
17829
17829
|
};
|
|
17830
17830
|
const InputBase = polymorphicFactory((props, ref) => {
|
|
17831
|
-
const { inputProps, wrapperProps, ...others } = useInputProps("InputBase", defaultProps$
|
|
17831
|
+
const { inputProps, wrapperProps, ...others } = useInputProps("InputBase", defaultProps$A, props);
|
|
17832
17832
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Input.Wrapper, { ...wrapperProps, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Input, { ...inputProps, ...others, ref }) });
|
|
17833
17833
|
});
|
|
17834
17834
|
InputBase.classes = { ...Input.classes, ...Input.Wrapper.classes };
|
|
@@ -17842,7 +17842,7 @@ const FLEX_STYLE_PROPS_DATA = {
|
|
|
17842
17842
|
wrap: { type: "identity", property: "flexWrap" },
|
|
17843
17843
|
direction: { type: "identity", property: "flexDirection" }
|
|
17844
17844
|
};
|
|
17845
|
-
var classes$
|
|
17845
|
+
var classes$s = { "root": "m_8bffd616" };
|
|
17846
17846
|
const Flex = polymorphicFactory((_props, ref) => {
|
|
17847
17847
|
const props = useProps("Flex", null, _props);
|
|
17848
17848
|
const {
|
|
@@ -17864,7 +17864,7 @@ const Flex = polymorphicFactory((_props, ref) => {
|
|
|
17864
17864
|
} = props;
|
|
17865
17865
|
const getStyles2 = useStyles({
|
|
17866
17866
|
name: "Flex",
|
|
17867
|
-
classes: classes$
|
|
17867
|
+
classes: classes$s,
|
|
17868
17868
|
props,
|
|
17869
17869
|
className,
|
|
17870
17870
|
style: style2,
|
|
@@ -17903,7 +17903,7 @@ const Flex = polymorphicFactory((_props, ref) => {
|
|
|
17903
17903
|
)
|
|
17904
17904
|
] });
|
|
17905
17905
|
});
|
|
17906
|
-
Flex.classes = classes$
|
|
17906
|
+
Flex.classes = classes$s;
|
|
17907
17907
|
Flex.displayName = "@mantine/core/Flex";
|
|
17908
17908
|
function useDelayedHover({ open, close, openDelay, closeDelay }) {
|
|
17909
17909
|
const openTimeout = reactExports.useRef(-1);
|
|
@@ -17953,8 +17953,8 @@ function AccordionChevron({ style: style2, size: size2 = 16, ...others }) {
|
|
|
17953
17953
|
);
|
|
17954
17954
|
}
|
|
17955
17955
|
AccordionChevron.displayName = "@mantine/core/AccordionChevron";
|
|
17956
|
-
var classes$
|
|
17957
|
-
const varsResolver$
|
|
17956
|
+
var classes$r = { "root": "m_66836ed3", "wrapper": "m_a5d60502", "body": "m_667c2793", "title": "m_6a03f287", "label": "m_698f4f23", "icon": "m_667f2a6a", "message": "m_7fa78076", "closeButton": "m_87f54839" };
|
|
17957
|
+
const varsResolver$u = createVarsResolver(
|
|
17958
17958
|
(theme2, { radius, color: color2, variant, autoContrast }) => {
|
|
17959
17959
|
const colors = theme2.variantColorResolver({
|
|
17960
17960
|
color: color2 || theme2.primaryColor,
|
|
@@ -17997,7 +17997,7 @@ const Alert = factory((_props, ref) => {
|
|
|
17997
17997
|
} = props;
|
|
17998
17998
|
const getStyles2 = useStyles({
|
|
17999
17999
|
name: "Alert",
|
|
18000
|
-
classes: classes$
|
|
18000
|
+
classes: classes$r,
|
|
18001
18001
|
props,
|
|
18002
18002
|
className,
|
|
18003
18003
|
style: style2,
|
|
@@ -18006,7 +18006,7 @@ const Alert = factory((_props, ref) => {
|
|
|
18006
18006
|
unstyled,
|
|
18007
18007
|
attributes,
|
|
18008
18008
|
vars,
|
|
18009
|
-
varsResolver: varsResolver$
|
|
18009
|
+
varsResolver: varsResolver$u
|
|
18010
18010
|
});
|
|
18011
18011
|
const rootId = useId$1(id);
|
|
18012
18012
|
const titleId = title && `${rootId}-title` || void 0;
|
|
@@ -18044,9 +18044,9 @@ const Alert = factory((_props, ref) => {
|
|
|
18044
18044
|
}
|
|
18045
18045
|
);
|
|
18046
18046
|
});
|
|
18047
|
-
Alert.classes = classes$
|
|
18047
|
+
Alert.classes = classes$r;
|
|
18048
18048
|
Alert.displayName = "@mantine/core/Alert";
|
|
18049
|
-
var classes$
|
|
18049
|
+
var classes$q = { "root": "m_b6d8b162" };
|
|
18050
18050
|
function getTextTruncate(truncate) {
|
|
18051
18051
|
if (truncate === "start") {
|
|
18052
18052
|
return "start";
|
|
@@ -18056,10 +18056,10 @@ function getTextTruncate(truncate) {
|
|
|
18056
18056
|
}
|
|
18057
18057
|
return void 0;
|
|
18058
18058
|
}
|
|
18059
|
-
const defaultProps$
|
|
18059
|
+
const defaultProps$z = {
|
|
18060
18060
|
inherit: false
|
|
18061
18061
|
};
|
|
18062
|
-
const varsResolver$
|
|
18062
|
+
const varsResolver$t = createVarsResolver(
|
|
18063
18063
|
// Will be removed in 9.0
|
|
18064
18064
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
18065
18065
|
(theme2, { variant, lineClamp, gradient, size: size2, color: color2 }) => ({
|
|
@@ -18073,7 +18073,7 @@ const varsResolver$r = createVarsResolver(
|
|
|
18073
18073
|
})
|
|
18074
18074
|
);
|
|
18075
18075
|
const Text = polymorphicFactory((_props, ref) => {
|
|
18076
|
-
const props = useProps("Text", defaultProps$
|
|
18076
|
+
const props = useProps("Text", defaultProps$z, _props);
|
|
18077
18077
|
const {
|
|
18078
18078
|
lineClamp,
|
|
18079
18079
|
truncate,
|
|
@@ -18097,7 +18097,7 @@ const Text = polymorphicFactory((_props, ref) => {
|
|
|
18097
18097
|
const getStyles2 = useStyles({
|
|
18098
18098
|
name: ["Text", __staticSelector],
|
|
18099
18099
|
props,
|
|
18100
|
-
classes: classes$
|
|
18100
|
+
classes: classes$q,
|
|
18101
18101
|
className,
|
|
18102
18102
|
style: style2,
|
|
18103
18103
|
classNames,
|
|
@@ -18105,7 +18105,7 @@ const Text = polymorphicFactory((_props, ref) => {
|
|
|
18105
18105
|
unstyled,
|
|
18106
18106
|
attributes,
|
|
18107
18107
|
vars,
|
|
18108
|
-
varsResolver: varsResolver$
|
|
18108
|
+
varsResolver: varsResolver$t
|
|
18109
18109
|
});
|
|
18110
18110
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
18111
18111
|
Box,
|
|
@@ -18128,7 +18128,7 @@ const Text = polymorphicFactory((_props, ref) => {
|
|
|
18128
18128
|
}
|
|
18129
18129
|
);
|
|
18130
18130
|
});
|
|
18131
|
-
Text.classes = classes$
|
|
18131
|
+
Text.classes = classes$q;
|
|
18132
18132
|
Text.displayName = "@mantine/core/Text";
|
|
18133
18133
|
function parseItem(item) {
|
|
18134
18134
|
if (typeof item === "string") {
|
|
@@ -18163,22 +18163,22 @@ function getOptionsLockup(options) {
|
|
|
18163
18163
|
return acc;
|
|
18164
18164
|
}, {});
|
|
18165
18165
|
}
|
|
18166
|
-
var classes$
|
|
18167
|
-
const defaultProps$
|
|
18166
|
+
var classes$p = { "dropdown": "m_88b62a41", "search": "m_985517d8", "options": "m_b2821a6e", "option": "m_92253aa5", "empty": "m_2530cd1d", "header": "m_858f94bd", "footer": "m_82b967cb", "group": "m_254f3e4f", "groupLabel": "m_2bb2e9e5", "chevron": "m_2943220b", "optionsDropdownOption": "m_390b5f4", "optionsDropdownCheckIcon": "m_8ee53fc2" };
|
|
18167
|
+
const defaultProps$y = {
|
|
18168
18168
|
error: null
|
|
18169
18169
|
};
|
|
18170
|
-
const varsResolver$
|
|
18170
|
+
const varsResolver$s = createVarsResolver((theme2, { size: size2, color: color2 }) => ({
|
|
18171
18171
|
chevron: {
|
|
18172
18172
|
"--combobox-chevron-size": getSize(size2, "combobox-chevron-size"),
|
|
18173
18173
|
"--combobox-chevron-color": color2 ? getThemeColor(color2, theme2) : void 0
|
|
18174
18174
|
}
|
|
18175
18175
|
}));
|
|
18176
18176
|
const ComboboxChevron = factory((_props, ref) => {
|
|
18177
|
-
const props = useProps("ComboboxChevron", defaultProps$
|
|
18177
|
+
const props = useProps("ComboboxChevron", defaultProps$y, _props);
|
|
18178
18178
|
const { size: size2, error, style: style2, className, classNames, styles: styles2, unstyled, vars, mod, ...others } = props;
|
|
18179
18179
|
const getStyles2 = useStyles({
|
|
18180
18180
|
name: "ComboboxChevron",
|
|
18181
|
-
classes: classes$
|
|
18181
|
+
classes: classes$p,
|
|
18182
18182
|
props,
|
|
18183
18183
|
style: style2,
|
|
18184
18184
|
className,
|
|
@@ -18186,7 +18186,7 @@ const ComboboxChevron = factory((_props, ref) => {
|
|
|
18186
18186
|
styles: styles2,
|
|
18187
18187
|
unstyled,
|
|
18188
18188
|
vars,
|
|
18189
|
-
varsResolver: varsResolver$
|
|
18189
|
+
varsResolver: varsResolver$s,
|
|
18190
18190
|
rootSelector: "chevron"
|
|
18191
18191
|
});
|
|
18192
18192
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -18213,7 +18213,7 @@ const ComboboxChevron = factory((_props, ref) => {
|
|
|
18213
18213
|
}
|
|
18214
18214
|
);
|
|
18215
18215
|
});
|
|
18216
|
-
ComboboxChevron.classes = classes$
|
|
18216
|
+
ComboboxChevron.classes = classes$p;
|
|
18217
18217
|
ComboboxChevron.displayName = "@mantine/core/ComboboxChevron";
|
|
18218
18218
|
const [ComboboxProvider, useComboboxContext] = createSafeContext(
|
|
18219
18219
|
"Combobox component was not found in tree"
|
|
@@ -18256,13 +18256,13 @@ const ComboboxDropdown = factory((props, ref) => {
|
|
|
18256
18256
|
}
|
|
18257
18257
|
);
|
|
18258
18258
|
});
|
|
18259
|
-
ComboboxDropdown.classes = classes$
|
|
18259
|
+
ComboboxDropdown.classes = classes$p;
|
|
18260
18260
|
ComboboxDropdown.displayName = "@mantine/core/ComboboxDropdown";
|
|
18261
|
-
const defaultProps$
|
|
18261
|
+
const defaultProps$x = {
|
|
18262
18262
|
refProp: "ref"
|
|
18263
18263
|
};
|
|
18264
18264
|
const ComboboxDropdownTarget = factory((props, ref) => {
|
|
18265
|
-
const { children, refProp } = useProps("ComboboxDropdownTarget", defaultProps$
|
|
18265
|
+
const { children, refProp } = useProps("ComboboxDropdownTarget", defaultProps$x, props);
|
|
18266
18266
|
useComboboxContext();
|
|
18267
18267
|
if (!isElement$1(children)) {
|
|
18268
18268
|
throw new Error(
|
|
@@ -18288,7 +18288,7 @@ const ComboboxEmpty = factory((props, ref) => {
|
|
|
18288
18288
|
}
|
|
18289
18289
|
);
|
|
18290
18290
|
});
|
|
18291
|
-
ComboboxEmpty.classes = classes$
|
|
18291
|
+
ComboboxEmpty.classes = classes$p;
|
|
18292
18292
|
ComboboxEmpty.displayName = "@mantine/core/ComboboxEmpty";
|
|
18293
18293
|
function useComboboxTargetProps({
|
|
18294
18294
|
onKeyDown,
|
|
@@ -18367,7 +18367,7 @@ function useComboboxTargetProps({
|
|
|
18367
18367
|
onKeyDown: handleKeyDown
|
|
18368
18368
|
};
|
|
18369
18369
|
}
|
|
18370
|
-
const defaultProps$
|
|
18370
|
+
const defaultProps$w = {
|
|
18371
18371
|
refProp: "ref",
|
|
18372
18372
|
targetType: "input",
|
|
18373
18373
|
withKeyboardNavigation: true,
|
|
@@ -18385,7 +18385,7 @@ const ComboboxEventsTarget = factory((props, ref) => {
|
|
|
18385
18385
|
targetType,
|
|
18386
18386
|
autoComplete,
|
|
18387
18387
|
...others
|
|
18388
|
-
} = useProps("ComboboxEventsTarget", defaultProps$
|
|
18388
|
+
} = useProps("ComboboxEventsTarget", defaultProps$w, props);
|
|
18389
18389
|
if (!isElement$1(children)) {
|
|
18390
18390
|
throw new Error(
|
|
18391
18391
|
"Combobox.EventsTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported"
|
|
@@ -18426,7 +18426,7 @@ const ComboboxFooter = factory((props, ref) => {
|
|
|
18426
18426
|
}
|
|
18427
18427
|
);
|
|
18428
18428
|
});
|
|
18429
|
-
ComboboxFooter.classes = classes$
|
|
18429
|
+
ComboboxFooter.classes = classes$p;
|
|
18430
18430
|
ComboboxFooter.displayName = "@mantine/core/ComboboxFooter";
|
|
18431
18431
|
const ComboboxGroup = factory((props, ref) => {
|
|
18432
18432
|
const { classNames, className, style: style2, styles: styles2, vars, children, label, ...others } = useProps(
|
|
@@ -18448,7 +18448,7 @@ const ComboboxGroup = factory((props, ref) => {
|
|
|
18448
18448
|
}
|
|
18449
18449
|
);
|
|
18450
18450
|
});
|
|
18451
|
-
ComboboxGroup.classes = classes$
|
|
18451
|
+
ComboboxGroup.classes = classes$p;
|
|
18452
18452
|
ComboboxGroup.displayName = "@mantine/core/ComboboxGroup";
|
|
18453
18453
|
const ComboboxHeader = factory((props, ref) => {
|
|
18454
18454
|
const { classNames, className, style: style2, styles: styles2, vars, ...others } = useProps(
|
|
@@ -18469,7 +18469,7 @@ const ComboboxHeader = factory((props, ref) => {
|
|
|
18469
18469
|
}
|
|
18470
18470
|
);
|
|
18471
18471
|
});
|
|
18472
|
-
ComboboxHeader.classes = classes$
|
|
18472
|
+
ComboboxHeader.classes = classes$p;
|
|
18473
18473
|
ComboboxHeader.displayName = "@mantine/core/ComboboxHeader";
|
|
18474
18474
|
function ComboboxHiddenInput({
|
|
18475
18475
|
value: value2,
|
|
@@ -18542,7 +18542,7 @@ const ComboboxOption = factory((_props, ref) => {
|
|
|
18542
18542
|
}
|
|
18543
18543
|
);
|
|
18544
18544
|
});
|
|
18545
|
-
ComboboxOption.classes = classes$
|
|
18545
|
+
ComboboxOption.classes = classes$p;
|
|
18546
18546
|
ComboboxOption.displayName = "@mantine/core/ComboboxOption";
|
|
18547
18547
|
const ComboboxOptions = factory((_props, ref) => {
|
|
18548
18548
|
const props = useProps("ComboboxOptions", null, _props);
|
|
@@ -18568,14 +18568,14 @@ const ComboboxOptions = factory((_props, ref) => {
|
|
|
18568
18568
|
}
|
|
18569
18569
|
);
|
|
18570
18570
|
});
|
|
18571
|
-
ComboboxOptions.classes = classes$
|
|
18571
|
+
ComboboxOptions.classes = classes$p;
|
|
18572
18572
|
ComboboxOptions.displayName = "@mantine/core/ComboboxOptions";
|
|
18573
|
-
const defaultProps$
|
|
18573
|
+
const defaultProps$v = {
|
|
18574
18574
|
withAriaAttributes: true,
|
|
18575
18575
|
withKeyboardNavigation: true
|
|
18576
18576
|
};
|
|
18577
18577
|
const ComboboxSearch = factory((_props, ref) => {
|
|
18578
|
-
const props = useProps("ComboboxSearch", defaultProps$
|
|
18578
|
+
const props = useProps("ComboboxSearch", defaultProps$v, _props);
|
|
18579
18579
|
const {
|
|
18580
18580
|
classNames,
|
|
18581
18581
|
styles: styles2,
|
|
@@ -18610,9 +18610,9 @@ const ComboboxSearch = factory((_props, ref) => {
|
|
|
18610
18610
|
}
|
|
18611
18611
|
);
|
|
18612
18612
|
});
|
|
18613
|
-
ComboboxSearch.classes = classes$
|
|
18613
|
+
ComboboxSearch.classes = classes$p;
|
|
18614
18614
|
ComboboxSearch.displayName = "@mantine/core/ComboboxSearch";
|
|
18615
|
-
const defaultProps$
|
|
18615
|
+
const defaultProps$u = {
|
|
18616
18616
|
refProp: "ref",
|
|
18617
18617
|
targetType: "input",
|
|
18618
18618
|
withKeyboardNavigation: true,
|
|
@@ -18630,7 +18630,7 @@ const ComboboxTarget = factory((props, ref) => {
|
|
|
18630
18630
|
targetType,
|
|
18631
18631
|
autoComplete,
|
|
18632
18632
|
...others
|
|
18633
|
-
} = useProps("ComboboxTarget", defaultProps$
|
|
18633
|
+
} = useProps("ComboboxTarget", defaultProps$u, props);
|
|
18634
18634
|
if (!isElement$1(children)) {
|
|
18635
18635
|
throw new Error(
|
|
18636
18636
|
"Combobox.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported"
|
|
@@ -18876,7 +18876,7 @@ function useCombobox({
|
|
|
18876
18876
|
focusTarget
|
|
18877
18877
|
};
|
|
18878
18878
|
}
|
|
18879
|
-
const defaultProps$
|
|
18879
|
+
const defaultProps$t = {
|
|
18880
18880
|
keepMounted: true,
|
|
18881
18881
|
withinPortal: true,
|
|
18882
18882
|
resetSelectionOnOptionHover: false,
|
|
@@ -18884,7 +18884,7 @@ const defaultProps$p = {
|
|
|
18884
18884
|
transitionProps: { transition: "fade", duration: 0 },
|
|
18885
18885
|
size: "sm"
|
|
18886
18886
|
};
|
|
18887
|
-
const varsResolver$
|
|
18887
|
+
const varsResolver$r = createVarsResolver((_, { size: size2, dropdownPadding }) => ({
|
|
18888
18888
|
options: {
|
|
18889
18889
|
"--combobox-option-fz": getFontSize(size2),
|
|
18890
18890
|
"--combobox-option-padding": getSize(size2, "combobox-option-padding")
|
|
@@ -18896,7 +18896,7 @@ const varsResolver$p = createVarsResolver((_, { size: size2, dropdownPadding })
|
|
|
18896
18896
|
}
|
|
18897
18897
|
}));
|
|
18898
18898
|
function Combobox(_props) {
|
|
18899
|
-
const props = useProps("Combobox", defaultProps$
|
|
18899
|
+
const props = useProps("Combobox", defaultProps$t, _props);
|
|
18900
18900
|
const {
|
|
18901
18901
|
classNames,
|
|
18902
18902
|
styles: styles2,
|
|
@@ -18918,14 +18918,14 @@ function Combobox(_props) {
|
|
|
18918
18918
|
const store = controlledStore || uncontrolledStore;
|
|
18919
18919
|
const getStyles2 = useStyles({
|
|
18920
18920
|
name: __staticSelector || "Combobox",
|
|
18921
|
-
classes: classes$
|
|
18921
|
+
classes: classes$p,
|
|
18922
18922
|
props,
|
|
18923
18923
|
classNames,
|
|
18924
18924
|
styles: styles2,
|
|
18925
18925
|
unstyled,
|
|
18926
18926
|
attributes,
|
|
18927
18927
|
vars,
|
|
18928
|
-
varsResolver: varsResolver$
|
|
18928
|
+
varsResolver: varsResolver$r
|
|
18929
18929
|
});
|
|
18930
18930
|
const onDropdownClose = () => {
|
|
18931
18931
|
onClose == null ? void 0 : onClose();
|
|
@@ -18959,7 +18959,7 @@ function Combobox(_props) {
|
|
|
18959
18959
|
}
|
|
18960
18960
|
const extendCombobox = (c2) => c2;
|
|
18961
18961
|
Combobox.extend = extendCombobox;
|
|
18962
|
-
Combobox.classes = classes$
|
|
18962
|
+
Combobox.classes = classes$p;
|
|
18963
18963
|
Combobox.displayName = "@mantine/core/Combobox";
|
|
18964
18964
|
Combobox.Target = ComboboxTarget;
|
|
18965
18965
|
Combobox.Dropdown = ComboboxDropdown;
|
|
@@ -18975,8 +18975,8 @@ Combobox.DropdownTarget = ComboboxDropdownTarget;
|
|
|
18975
18975
|
Combobox.Group = ComboboxGroup;
|
|
18976
18976
|
Combobox.ClearButton = ComboboxClearButton;
|
|
18977
18977
|
Combobox.HiddenInput = ComboboxHiddenInput;
|
|
18978
|
-
var classes$
|
|
18979
|
-
const InlineInputClasses = classes$
|
|
18978
|
+
var classes$o = { "root": "m_5f75b09e", "body": "m_5f6e695e", "labelWrapper": "m_d3ea56bb", "label": "m_8ee546b8", "description": "m_328f68c0", "error": "m_8e8a99cc" };
|
|
18979
|
+
const InlineInputClasses = classes$o;
|
|
18980
18980
|
const InlineInput = reactExports.forwardRef(
|
|
18981
18981
|
({
|
|
18982
18982
|
__staticSelector,
|
|
@@ -19007,7 +19007,7 @@ const InlineInput = reactExports.forwardRef(
|
|
|
19007
19007
|
props: __stylesApiProps,
|
|
19008
19008
|
className,
|
|
19009
19009
|
style: style2,
|
|
19010
|
-
classes: classes$
|
|
19010
|
+
classes: classes$o,
|
|
19011
19011
|
classNames,
|
|
19012
19012
|
styles: styles2,
|
|
19013
19013
|
unstyled,
|
|
@@ -19060,17 +19060,17 @@ const CheckboxGroupContext = reactExports.createContext(null);
|
|
|
19060
19060
|
const CheckboxGroupProvider = CheckboxGroupContext.Provider;
|
|
19061
19061
|
const useCheckboxGroupContext = () => reactExports.useContext(CheckboxGroupContext);
|
|
19062
19062
|
const [CheckboxCardProvider, useCheckboxCardContext] = createOptionalContext();
|
|
19063
|
-
var classes$
|
|
19064
|
-
const defaultProps$
|
|
19063
|
+
var classes$n = { "card": "m_26775b0a" };
|
|
19064
|
+
const defaultProps$s = {
|
|
19065
19065
|
withBorder: true
|
|
19066
19066
|
};
|
|
19067
|
-
const varsResolver$
|
|
19067
|
+
const varsResolver$q = createVarsResolver((_, { radius }) => ({
|
|
19068
19068
|
card: {
|
|
19069
19069
|
"--card-radius": getRadius(radius)
|
|
19070
19070
|
}
|
|
19071
19071
|
}));
|
|
19072
19072
|
const CheckboxCard = factory((_props, ref) => {
|
|
19073
|
-
const props = useProps("CheckboxCard", defaultProps$
|
|
19073
|
+
const props = useProps("CheckboxCard", defaultProps$s, _props);
|
|
19074
19074
|
const {
|
|
19075
19075
|
classNames,
|
|
19076
19076
|
className,
|
|
@@ -19090,7 +19090,7 @@ const CheckboxCard = factory((_props, ref) => {
|
|
|
19090
19090
|
} = props;
|
|
19091
19091
|
const getStyles2 = useStyles({
|
|
19092
19092
|
name: "CheckboxCard",
|
|
19093
|
-
classes: classes$
|
|
19093
|
+
classes: classes$n,
|
|
19094
19094
|
props,
|
|
19095
19095
|
className,
|
|
19096
19096
|
style: style2,
|
|
@@ -19099,7 +19099,7 @@ const CheckboxCard = factory((_props, ref) => {
|
|
|
19099
19099
|
unstyled,
|
|
19100
19100
|
attributes,
|
|
19101
19101
|
vars,
|
|
19102
|
-
varsResolver: varsResolver$
|
|
19102
|
+
varsResolver: varsResolver$q,
|
|
19103
19103
|
rootSelector: "card"
|
|
19104
19104
|
});
|
|
19105
19105
|
const ctx = useCheckboxGroupContext();
|
|
@@ -19128,7 +19128,7 @@ const CheckboxCard = factory((_props, ref) => {
|
|
|
19128
19128
|
) });
|
|
19129
19129
|
});
|
|
19130
19130
|
CheckboxCard.displayName = "@mantine/core/CheckboxCard";
|
|
19131
|
-
CheckboxCard.classes = classes$
|
|
19131
|
+
CheckboxCard.classes = classes$n;
|
|
19132
19132
|
function InputsGroupFieldset({ children, role }) {
|
|
19133
19133
|
const ctx = useInputWrapperContext();
|
|
19134
19134
|
if (!ctx) {
|
|
@@ -19204,11 +19204,11 @@ function CheckboxIcon({ indeterminate, ...others }) {
|
|
|
19204
19204
|
}
|
|
19205
19205
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(CheckIcon, { ...others });
|
|
19206
19206
|
}
|
|
19207
|
-
var classes$
|
|
19208
|
-
const defaultProps$
|
|
19207
|
+
var classes$m = { "indicator": "m_5e5256ee", "icon": "m_1b1c543a", "indicator--outline": "m_76e20374" };
|
|
19208
|
+
const defaultProps$r = {
|
|
19209
19209
|
icon: CheckboxIcon
|
|
19210
19210
|
};
|
|
19211
|
-
const varsResolver$
|
|
19211
|
+
const varsResolver$p = createVarsResolver(
|
|
19212
19212
|
(theme2, { radius, color: color2, size: size2, iconColor, variant, autoContrast }) => {
|
|
19213
19213
|
const parsedColor = parseThemeColor({ color: color2 || theme2.primaryColor, theme: theme2 });
|
|
19214
19214
|
const outlineColor = parsedColor.isThemeColor && parsedColor.shade === void 0 ? `var(--mantine-color-${parsedColor.color}-outline)` : parsedColor.color;
|
|
@@ -19223,7 +19223,7 @@ const varsResolver$n = createVarsResolver(
|
|
|
19223
19223
|
}
|
|
19224
19224
|
);
|
|
19225
19225
|
const CheckboxIndicator = factory((_props, ref) => {
|
|
19226
|
-
const props = useProps("CheckboxIndicator", defaultProps$
|
|
19226
|
+
const props = useProps("CheckboxIndicator", defaultProps$r, _props);
|
|
19227
19227
|
const {
|
|
19228
19228
|
classNames,
|
|
19229
19229
|
className,
|
|
@@ -19246,7 +19246,7 @@ const CheckboxIndicator = factory((_props, ref) => {
|
|
|
19246
19246
|
} = props;
|
|
19247
19247
|
const getStyles2 = useStyles({
|
|
19248
19248
|
name: "CheckboxIndicator",
|
|
19249
|
-
classes: classes$
|
|
19249
|
+
classes: classes$m,
|
|
19250
19250
|
props,
|
|
19251
19251
|
className,
|
|
19252
19252
|
style: style2,
|
|
@@ -19255,7 +19255,7 @@ const CheckboxIndicator = factory((_props, ref) => {
|
|
|
19255
19255
|
unstyled,
|
|
19256
19256
|
attributes,
|
|
19257
19257
|
vars,
|
|
19258
|
-
varsResolver: varsResolver$
|
|
19258
|
+
varsResolver: varsResolver$p,
|
|
19259
19259
|
rootSelector: "indicator"
|
|
19260
19260
|
});
|
|
19261
19261
|
const ctx = useCheckboxCardContext();
|
|
@@ -19273,13 +19273,13 @@ const CheckboxIndicator = factory((_props, ref) => {
|
|
|
19273
19273
|
);
|
|
19274
19274
|
});
|
|
19275
19275
|
CheckboxIndicator.displayName = "@mantine/core/CheckboxIndicator";
|
|
19276
|
-
CheckboxIndicator.classes = classes$
|
|
19277
|
-
var classes$
|
|
19278
|
-
const defaultProps$
|
|
19276
|
+
CheckboxIndicator.classes = classes$m;
|
|
19277
|
+
var classes$l = { "root": "m_bf2d988c", "inner": "m_26062bec", "input": "m_26063560", "icon": "m_bf295423", "input--outline": "m_215c4542" };
|
|
19278
|
+
const defaultProps$q = {
|
|
19279
19279
|
labelPosition: "right",
|
|
19280
19280
|
icon: CheckboxIcon
|
|
19281
19281
|
};
|
|
19282
|
-
const varsResolver$
|
|
19282
|
+
const varsResolver$o = createVarsResolver(
|
|
19283
19283
|
(theme2, { radius, color: color2, size: size2, iconColor, variant, autoContrast }) => {
|
|
19284
19284
|
const parsedColor = parseThemeColor({ color: color2 || theme2.primaryColor, theme: theme2 });
|
|
19285
19285
|
const outlineColor = parsedColor.isThemeColor && parsedColor.shade === void 0 ? `var(--mantine-color-${parsedColor.color}-outline)` : parsedColor.color;
|
|
@@ -19294,7 +19294,7 @@ const varsResolver$m = createVarsResolver(
|
|
|
19294
19294
|
}
|
|
19295
19295
|
);
|
|
19296
19296
|
const Checkbox = factory((_props, forwardedRef) => {
|
|
19297
|
-
const props = useProps("Checkbox", defaultProps$
|
|
19297
|
+
const props = useProps("Checkbox", defaultProps$q, _props);
|
|
19298
19298
|
const {
|
|
19299
19299
|
classNames,
|
|
19300
19300
|
className,
|
|
@@ -19329,7 +19329,7 @@ const Checkbox = factory((_props, forwardedRef) => {
|
|
|
19329
19329
|
const getStyles2 = useStyles({
|
|
19330
19330
|
name: "Checkbox",
|
|
19331
19331
|
props,
|
|
19332
|
-
classes: classes$
|
|
19332
|
+
classes: classes$l,
|
|
19333
19333
|
className,
|
|
19334
19334
|
style: style2,
|
|
19335
19335
|
classNames,
|
|
@@ -19337,7 +19337,7 @@ const Checkbox = factory((_props, forwardedRef) => {
|
|
|
19337
19337
|
unstyled,
|
|
19338
19338
|
attributes,
|
|
19339
19339
|
vars,
|
|
19340
|
-
varsResolver: varsResolver$
|
|
19340
|
+
varsResolver: varsResolver$o
|
|
19341
19341
|
});
|
|
19342
19342
|
const { styleProps, rest } = extractStyleProps(others);
|
|
19343
19343
|
const uuid = useId$1(id);
|
|
@@ -19399,7 +19399,7 @@ const Checkbox = factory((_props, forwardedRef) => {
|
|
|
19399
19399
|
}
|
|
19400
19400
|
);
|
|
19401
19401
|
});
|
|
19402
|
-
Checkbox.classes = { ...classes$
|
|
19402
|
+
Checkbox.classes = { ...classes$l, ...InlineInputClasses };
|
|
19403
19403
|
Checkbox.displayName = "@mantine/core/Checkbox";
|
|
19404
19404
|
Checkbox.Group = CheckboxGroup;
|
|
19405
19405
|
Checkbox.Indicator = CheckboxIndicator;
|
|
@@ -19489,7 +19489,7 @@ function Option({
|
|
|
19489
19489
|
}) {
|
|
19490
19490
|
if (!isOptionsGroup(data)) {
|
|
19491
19491
|
const checked = isValueChecked(value2, data.value);
|
|
19492
|
-
const check = withCheckIcon && checked && /* @__PURE__ */ jsxRuntimeExports.jsx(CheckIcon, { className: classes$
|
|
19492
|
+
const check = withCheckIcon && checked && /* @__PURE__ */ jsxRuntimeExports.jsx(CheckIcon, { className: classes$p.optionsDropdownCheckIcon });
|
|
19493
19493
|
const defaultContent = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
19494
19494
|
checkIconPosition === "left" && check,
|
|
19495
19495
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: data.label }),
|
|
@@ -19500,7 +19500,7 @@ function Option({
|
|
|
19500
19500
|
{
|
|
19501
19501
|
value: data.value,
|
|
19502
19502
|
disabled: data.disabled,
|
|
19503
|
-
className: clsx({ [classes$
|
|
19503
|
+
className: clsx({ [classes$p.optionsDropdownOption]: !unstyled }),
|
|
19504
19504
|
"data-reverse": checkIconPosition === "right" || void 0,
|
|
19505
19505
|
"data-checked": checked || void 0,
|
|
19506
19506
|
"aria-selected": checked,
|
|
@@ -19584,8 +19584,8 @@ function useAvatarGroupContext() {
|
|
|
19584
19584
|
const ctx = reactExports.useContext(AvatarGroupContext);
|
|
19585
19585
|
return { withinGroup: !!ctx };
|
|
19586
19586
|
}
|
|
19587
|
-
var classes$
|
|
19588
|
-
const varsResolver$
|
|
19587
|
+
var classes$k = { "group": "m_11def92b", "root": "m_f85678b6", "image": "m_11f8ac07", "placeholder": "m_104cd71f" };
|
|
19588
|
+
const varsResolver$n = createVarsResolver((_, { spacing }) => ({
|
|
19589
19589
|
group: {
|
|
19590
19590
|
"--ag-spacing": getSpacing(spacing)
|
|
19591
19591
|
}
|
|
@@ -19595,7 +19595,7 @@ const AvatarGroup = factory((_props, ref) => {
|
|
|
19595
19595
|
const { classNames, className, style: style2, styles: styles2, unstyled, vars, spacing, attributes, ...others } = props;
|
|
19596
19596
|
const getStyles2 = useStyles({
|
|
19597
19597
|
name: "AvatarGroup",
|
|
19598
|
-
classes: classes$
|
|
19598
|
+
classes: classes$k,
|
|
19599
19599
|
props,
|
|
19600
19600
|
className,
|
|
19601
19601
|
style: style2,
|
|
@@ -19604,12 +19604,12 @@ const AvatarGroup = factory((_props, ref) => {
|
|
|
19604
19604
|
unstyled,
|
|
19605
19605
|
attributes,
|
|
19606
19606
|
vars,
|
|
19607
|
-
varsResolver: varsResolver$
|
|
19607
|
+
varsResolver: varsResolver$n,
|
|
19608
19608
|
rootSelector: "group"
|
|
19609
19609
|
});
|
|
19610
19610
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(AvatarGroupProvider, { value: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { ref, ...getStyles2("group"), ...others }) });
|
|
19611
19611
|
});
|
|
19612
|
-
AvatarGroup.classes = classes$
|
|
19612
|
+
AvatarGroup.classes = classes$k;
|
|
19613
19613
|
AvatarGroup.displayName = "@mantine/core/AvatarGroup";
|
|
19614
19614
|
function AvatarPlaceholderIcon(props) {
|
|
19615
19615
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -19666,7 +19666,7 @@ function getInitials(name2, limit = 2) {
|
|
|
19666
19666
|
}
|
|
19667
19667
|
return splitted.map((word) => word[0]).slice(0, limit).join("").toUpperCase();
|
|
19668
19668
|
}
|
|
19669
|
-
const varsResolver$
|
|
19669
|
+
const varsResolver$m = createVarsResolver(
|
|
19670
19670
|
(theme2, { size: size2, radius, variant, gradient, color: color2, autoContrast, name: name2, allowedInitialsColors }) => {
|
|
19671
19671
|
const _color = color2 === "initials" && typeof name2 === "string" ? getInitialsColor(name2, allowedInitialsColors) : color2;
|
|
19672
19672
|
const colors = theme2.variantColorResolver({
|
|
@@ -19715,7 +19715,7 @@ const Avatar = polymorphicFactory((_props, ref) => {
|
|
|
19715
19715
|
const getStyles2 = useStyles({
|
|
19716
19716
|
name: "Avatar",
|
|
19717
19717
|
props,
|
|
19718
|
-
classes: classes$
|
|
19718
|
+
classes: classes$k,
|
|
19719
19719
|
className,
|
|
19720
19720
|
style: style2,
|
|
19721
19721
|
classNames,
|
|
@@ -19723,7 +19723,7 @@ const Avatar = polymorphicFactory((_props, ref) => {
|
|
|
19723
19723
|
unstyled,
|
|
19724
19724
|
attributes,
|
|
19725
19725
|
vars,
|
|
19726
|
-
varsResolver: varsResolver$
|
|
19726
|
+
varsResolver: varsResolver$m
|
|
19727
19727
|
});
|
|
19728
19728
|
reactExports.useEffect(() => setError(!src), [src]);
|
|
19729
19729
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -19750,11 +19750,11 @@ const Avatar = polymorphicFactory((_props, ref) => {
|
|
|
19750
19750
|
}
|
|
19751
19751
|
);
|
|
19752
19752
|
});
|
|
19753
|
-
Avatar.classes = classes$
|
|
19753
|
+
Avatar.classes = classes$k;
|
|
19754
19754
|
Avatar.displayName = "@mantine/core/Avatar";
|
|
19755
19755
|
Avatar.Group = AvatarGroup;
|
|
19756
|
-
var classes$
|
|
19757
|
-
const varsResolver$
|
|
19756
|
+
var classes$j = { "root": "m_347db0ec", "root--dot": "m_fbd81e3d", "label": "m_5add502a", "section": "m_91fdda9b" };
|
|
19757
|
+
const varsResolver$l = createVarsResolver(
|
|
19758
19758
|
(theme2, { radius, color: color2, gradient, variant, size: size2, autoContrast }) => {
|
|
19759
19759
|
const colors = theme2.variantColorResolver({
|
|
19760
19760
|
color: color2 || theme2.primaryColor,
|
|
@@ -19803,7 +19803,7 @@ const Badge = polymorphicFactory((_props, ref) => {
|
|
|
19803
19803
|
const getStyles2 = useStyles({
|
|
19804
19804
|
name: "Badge",
|
|
19805
19805
|
props,
|
|
19806
|
-
classes: classes$
|
|
19806
|
+
classes: classes$j,
|
|
19807
19807
|
className,
|
|
19808
19808
|
style: style2,
|
|
19809
19809
|
classNames,
|
|
@@ -19811,7 +19811,7 @@ const Badge = polymorphicFactory((_props, ref) => {
|
|
|
19811
19811
|
unstyled,
|
|
19812
19812
|
attributes,
|
|
19813
19813
|
vars,
|
|
19814
|
-
varsResolver: varsResolver$
|
|
19814
|
+
varsResolver: varsResolver$l
|
|
19815
19815
|
});
|
|
19816
19816
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
19817
19817
|
Box,
|
|
@@ -19837,17 +19837,17 @@ const Badge = polymorphicFactory((_props, ref) => {
|
|
|
19837
19837
|
}
|
|
19838
19838
|
);
|
|
19839
19839
|
});
|
|
19840
|
-
Badge.classes = classes$
|
|
19840
|
+
Badge.classes = classes$j;
|
|
19841
19841
|
Badge.displayName = "@mantine/core/Badge";
|
|
19842
|
-
var classes$
|
|
19843
|
-
const defaultProps$
|
|
19842
|
+
var classes$i = { "root": "m_77c9d27d", "inner": "m_80f1301b", "label": "m_811560b9", "section": "m_a74036a", "loader": "m_a25b86ee", "group": "m_80d6d844", "groupSection": "m_70be2a01" };
|
|
19843
|
+
const defaultProps$p = {
|
|
19844
19844
|
orientation: "horizontal"
|
|
19845
19845
|
};
|
|
19846
|
-
const varsResolver$
|
|
19846
|
+
const varsResolver$k = createVarsResolver((_, { borderWidth }) => ({
|
|
19847
19847
|
group: { "--button-border-width": rem(borderWidth) }
|
|
19848
19848
|
}));
|
|
19849
19849
|
const ButtonGroup = factory((_props, ref) => {
|
|
19850
|
-
const props = useProps("ButtonGroup", defaultProps$
|
|
19850
|
+
const props = useProps("ButtonGroup", defaultProps$p, _props);
|
|
19851
19851
|
const {
|
|
19852
19852
|
className,
|
|
19853
19853
|
style: style2,
|
|
@@ -19861,11 +19861,11 @@ const ButtonGroup = factory((_props, ref) => {
|
|
|
19861
19861
|
mod,
|
|
19862
19862
|
attributes,
|
|
19863
19863
|
...others
|
|
19864
|
-
} = useProps("ButtonGroup", defaultProps$
|
|
19864
|
+
} = useProps("ButtonGroup", defaultProps$p, _props);
|
|
19865
19865
|
const getStyles2 = useStyles({
|
|
19866
19866
|
name: "ButtonGroup",
|
|
19867
19867
|
props,
|
|
19868
|
-
classes: classes$
|
|
19868
|
+
classes: classes$i,
|
|
19869
19869
|
className,
|
|
19870
19870
|
style: style2,
|
|
19871
19871
|
classNames,
|
|
@@ -19873,7 +19873,7 @@ const ButtonGroup = factory((_props, ref) => {
|
|
|
19873
19873
|
unstyled,
|
|
19874
19874
|
attributes,
|
|
19875
19875
|
vars,
|
|
19876
|
-
varsResolver: varsResolver$
|
|
19876
|
+
varsResolver: varsResolver$k,
|
|
19877
19877
|
rootSelector: "group"
|
|
19878
19878
|
});
|
|
19879
19879
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -19888,9 +19888,9 @@ const ButtonGroup = factory((_props, ref) => {
|
|
|
19888
19888
|
}
|
|
19889
19889
|
);
|
|
19890
19890
|
});
|
|
19891
|
-
ButtonGroup.classes = classes$
|
|
19891
|
+
ButtonGroup.classes = classes$i;
|
|
19892
19892
|
ButtonGroup.displayName = "@mantine/core/ButtonGroup";
|
|
19893
|
-
const varsResolver$
|
|
19893
|
+
const varsResolver$j = createVarsResolver(
|
|
19894
19894
|
(theme2, { radius, color: color2, gradient, variant, autoContrast, size: size2 }) => {
|
|
19895
19895
|
const colors = theme2.variantColorResolver({
|
|
19896
19896
|
color: color2 || theme2.primaryColor,
|
|
@@ -19931,7 +19931,7 @@ const ButtonGroupSection = factory((_props, ref) => {
|
|
|
19931
19931
|
const getStyles2 = useStyles({
|
|
19932
19932
|
name: "ButtonGroupSection",
|
|
19933
19933
|
props,
|
|
19934
|
-
classes: classes$
|
|
19934
|
+
classes: classes$i,
|
|
19935
19935
|
className,
|
|
19936
19936
|
style: style2,
|
|
19937
19937
|
classNames,
|
|
@@ -19939,12 +19939,12 @@ const ButtonGroupSection = factory((_props, ref) => {
|
|
|
19939
19939
|
unstyled,
|
|
19940
19940
|
attributes,
|
|
19941
19941
|
vars,
|
|
19942
|
-
varsResolver: varsResolver$
|
|
19942
|
+
varsResolver: varsResolver$j,
|
|
19943
19943
|
rootSelector: "groupSection"
|
|
19944
19944
|
});
|
|
19945
19945
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { ...getStyles2("groupSection"), ref, variant, ...others });
|
|
19946
19946
|
});
|
|
19947
|
-
ButtonGroupSection.classes = classes$
|
|
19947
|
+
ButtonGroupSection.classes = classes$i;
|
|
19948
19948
|
ButtonGroupSection.displayName = "@mantine/core/ButtonGroupSection";
|
|
19949
19949
|
const loaderTransition = {
|
|
19950
19950
|
in: { opacity: 1, transform: `translate(-50%, calc(-50% + ${rem(1)}))` },
|
|
@@ -19952,7 +19952,7 @@ const loaderTransition = {
|
|
|
19952
19952
|
common: { transformOrigin: "center" },
|
|
19953
19953
|
transitionProperty: "transform, opacity"
|
|
19954
19954
|
};
|
|
19955
|
-
const varsResolver$
|
|
19955
|
+
const varsResolver$i = createVarsResolver(
|
|
19956
19956
|
(theme2, { radius, color: color2, gradient, variant, size: size2, justify, autoContrast }) => {
|
|
19957
19957
|
const colors = theme2.variantColorResolver({
|
|
19958
19958
|
color: color2 || theme2.primaryColor,
|
|
@@ -20006,7 +20006,7 @@ const Button = polymorphicFactory((_props, ref) => {
|
|
|
20006
20006
|
const getStyles2 = useStyles({
|
|
20007
20007
|
name: "Button",
|
|
20008
20008
|
props,
|
|
20009
|
-
classes: classes$
|
|
20009
|
+
classes: classes$i,
|
|
20010
20010
|
className,
|
|
20011
20011
|
style: style2,
|
|
20012
20012
|
classNames,
|
|
@@ -20014,7 +20014,7 @@ const Button = polymorphicFactory((_props, ref) => {
|
|
|
20014
20014
|
unstyled,
|
|
20015
20015
|
attributes,
|
|
20016
20016
|
vars,
|
|
20017
|
-
varsResolver: varsResolver$
|
|
20017
|
+
varsResolver: varsResolver$i
|
|
20018
20018
|
});
|
|
20019
20019
|
const hasLeftSection = !!leftSection;
|
|
20020
20020
|
const hasRightSection = !!rightSection;
|
|
@@ -20055,11 +20055,11 @@ const Button = polymorphicFactory((_props, ref) => {
|
|
|
20055
20055
|
}
|
|
20056
20056
|
);
|
|
20057
20057
|
});
|
|
20058
|
-
Button.classes = classes$
|
|
20058
|
+
Button.classes = classes$i;
|
|
20059
20059
|
Button.displayName = "@mantine/core/Button";
|
|
20060
20060
|
Button.Group = ButtonGroup;
|
|
20061
20061
|
Button.GroupSection = ButtonGroupSection;
|
|
20062
|
-
var classes$
|
|
20062
|
+
var classes$h = { "root": "m_4451eb3a" };
|
|
20063
20063
|
const Center = polymorphicFactory((_props, ref) => {
|
|
20064
20064
|
const props = useProps("Center", null, _props);
|
|
20065
20065
|
const {
|
|
@@ -20077,7 +20077,7 @@ const Center = polymorphicFactory((_props, ref) => {
|
|
|
20077
20077
|
const getStyles2 = useStyles({
|
|
20078
20078
|
name: "Center",
|
|
20079
20079
|
props,
|
|
20080
|
-
classes: classes$
|
|
20080
|
+
classes: classes$h,
|
|
20081
20081
|
className,
|
|
20082
20082
|
style: style2,
|
|
20083
20083
|
classNames,
|
|
@@ -20088,10 +20088,10 @@ const Center = polymorphicFactory((_props, ref) => {
|
|
|
20088
20088
|
});
|
|
20089
20089
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { ref, mod: [{ inline: inline2 }, mod], ...getStyles2("root"), ...others });
|
|
20090
20090
|
});
|
|
20091
|
-
Center.classes = classes$
|
|
20091
|
+
Center.classes = classes$h;
|
|
20092
20092
|
Center.displayName = "@mantine/core/Center";
|
|
20093
|
-
var classes$
|
|
20094
|
-
const varsResolver$
|
|
20093
|
+
var classes$g = { "root": "m_b183c0a2" };
|
|
20094
|
+
const varsResolver$h = createVarsResolver((theme2, { color: color2 }) => ({
|
|
20095
20095
|
root: {
|
|
20096
20096
|
"--code-bg": color2 ? getThemeColor(color2, theme2) : void 0
|
|
20097
20097
|
}
|
|
@@ -20115,7 +20115,7 @@ const Code = factory((_props, ref) => {
|
|
|
20115
20115
|
const getStyles2 = useStyles({
|
|
20116
20116
|
name: "Code",
|
|
20117
20117
|
props,
|
|
20118
|
-
classes: classes$
|
|
20118
|
+
classes: classes$g,
|
|
20119
20119
|
className,
|
|
20120
20120
|
style: style2,
|
|
20121
20121
|
classNames,
|
|
@@ -20123,7 +20123,7 @@ const Code = factory((_props, ref) => {
|
|
|
20123
20123
|
unstyled,
|
|
20124
20124
|
attributes,
|
|
20125
20125
|
vars,
|
|
20126
|
-
varsResolver: varsResolver$
|
|
20126
|
+
varsResolver: varsResolver$h
|
|
20127
20127
|
});
|
|
20128
20128
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
20129
20129
|
Box,
|
|
@@ -20138,13 +20138,13 @@ const Code = factory((_props, ref) => {
|
|
|
20138
20138
|
}
|
|
20139
20139
|
);
|
|
20140
20140
|
});
|
|
20141
|
-
Code.classes = classes$
|
|
20141
|
+
Code.classes = classes$g;
|
|
20142
20142
|
Code.displayName = "@mantine/core/Code";
|
|
20143
|
-
var classes$
|
|
20144
|
-
const defaultProps$
|
|
20143
|
+
var classes$f = { "root": "m_3eebeb36", "label": "m_9e365f20" };
|
|
20144
|
+
const defaultProps$o = {
|
|
20145
20145
|
orientation: "horizontal"
|
|
20146
20146
|
};
|
|
20147
|
-
const varsResolver$
|
|
20147
|
+
const varsResolver$g = createVarsResolver((theme2, { color: color2, variant, size: size2 }) => ({
|
|
20148
20148
|
root: {
|
|
20149
20149
|
"--divider-color": color2 ? getThemeColor(color2, theme2) : void 0,
|
|
20150
20150
|
"--divider-border-style": variant,
|
|
@@ -20152,7 +20152,7 @@ const varsResolver$e = createVarsResolver((theme2, { color: color2, variant, siz
|
|
|
20152
20152
|
}
|
|
20153
20153
|
}));
|
|
20154
20154
|
const Divider = factory((_props, ref) => {
|
|
20155
|
-
const props = useProps("Divider", defaultProps$
|
|
20155
|
+
const props = useProps("Divider", defaultProps$o, _props);
|
|
20156
20156
|
const {
|
|
20157
20157
|
classNames,
|
|
20158
20158
|
className,
|
|
@@ -20170,7 +20170,7 @@ const Divider = factory((_props, ref) => {
|
|
|
20170
20170
|
} = props;
|
|
20171
20171
|
const getStyles2 = useStyles({
|
|
20172
20172
|
name: "Divider",
|
|
20173
|
-
classes: classes$
|
|
20173
|
+
classes: classes$f,
|
|
20174
20174
|
props,
|
|
20175
20175
|
className,
|
|
20176
20176
|
style: style2,
|
|
@@ -20179,7 +20179,7 @@ const Divider = factory((_props, ref) => {
|
|
|
20179
20179
|
unstyled,
|
|
20180
20180
|
attributes,
|
|
20181
20181
|
vars,
|
|
20182
|
-
varsResolver: varsResolver$
|
|
20182
|
+
varsResolver: varsResolver$g
|
|
20183
20183
|
});
|
|
20184
20184
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
20185
20185
|
Box,
|
|
@@ -20193,10 +20193,10 @@ const Divider = factory((_props, ref) => {
|
|
|
20193
20193
|
}
|
|
20194
20194
|
);
|
|
20195
20195
|
});
|
|
20196
|
-
Divider.classes = classes$
|
|
20196
|
+
Divider.classes = classes$f;
|
|
20197
20197
|
Divider.displayName = "@mantine/core/Divider";
|
|
20198
|
-
var classes$
|
|
20199
|
-
const varsResolver$
|
|
20198
|
+
var classes$e = { "root": "m_9e117634" };
|
|
20199
|
+
const varsResolver$f = createVarsResolver((_, { radius, fit }) => ({
|
|
20200
20200
|
root: {
|
|
20201
20201
|
"--image-radius": radius === void 0 ? void 0 : getRadius(radius),
|
|
20202
20202
|
"--image-object-fit": fit
|
|
@@ -20224,7 +20224,7 @@ const Image = polymorphicFactory((_props, ref) => {
|
|
|
20224
20224
|
reactExports.useEffect(() => setError(!src), [src]);
|
|
20225
20225
|
const getStyles2 = useStyles({
|
|
20226
20226
|
name: "Image",
|
|
20227
|
-
classes: classes$
|
|
20227
|
+
classes: classes$e,
|
|
20228
20228
|
props,
|
|
20229
20229
|
className,
|
|
20230
20230
|
style: style2,
|
|
@@ -20233,7 +20233,7 @@ const Image = polymorphicFactory((_props, ref) => {
|
|
|
20233
20233
|
unstyled,
|
|
20234
20234
|
attributes,
|
|
20235
20235
|
vars,
|
|
20236
|
-
varsResolver: varsResolver$
|
|
20236
|
+
varsResolver: varsResolver$f
|
|
20237
20237
|
});
|
|
20238
20238
|
if (error && fallbackSrc) {
|
|
20239
20239
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -20265,7 +20265,7 @@ const Image = polymorphicFactory((_props, ref) => {
|
|
|
20265
20265
|
}
|
|
20266
20266
|
);
|
|
20267
20267
|
});
|
|
20268
|
-
Image.classes = classes$
|
|
20268
|
+
Image.classes = classes$e;
|
|
20269
20269
|
Image.displayName = "@mantine/core/Image";
|
|
20270
20270
|
function _extends() {
|
|
20271
20271
|
return _extends = Object.assign ? Object.assign.bind() : function(n2) {
|
|
@@ -20546,7 +20546,7 @@ Textarea.displayName = "@mantine/core/Textarea";
|
|
|
20546
20546
|
const [MenuContextProvider, useMenuContext] = createSafeContext(
|
|
20547
20547
|
"Menu component was not found in the tree"
|
|
20548
20548
|
);
|
|
20549
|
-
var classes$
|
|
20549
|
+
var classes$d = { "dropdown": "m_dc9b7c9f", "label": "m_9bfac126", "divider": "m_efdf90cb", "item": "m_99ac2aa1", "itemLabel": "m_5476e0d3", "itemSection": "m_8b75e504", "chevron": "m_b85b0bed" };
|
|
20550
20550
|
const MenuDivider = factory((props, ref) => {
|
|
20551
20551
|
const { classNames, className, style: style2, styles: styles2, vars, ...others } = useProps(
|
|
20552
20552
|
"MenuDivider",
|
|
@@ -20563,7 +20563,7 @@ const MenuDivider = factory((props, ref) => {
|
|
|
20563
20563
|
}
|
|
20564
20564
|
);
|
|
20565
20565
|
});
|
|
20566
|
-
MenuDivider.classes = classes$
|
|
20566
|
+
MenuDivider.classes = classes$d;
|
|
20567
20567
|
MenuDivider.displayName = "@mantine/core/MenuDivider";
|
|
20568
20568
|
const MenuDropdown = factory((props, ref) => {
|
|
20569
20569
|
const {
|
|
@@ -20621,7 +20621,7 @@ const MenuDropdown = factory((props, ref) => {
|
|
|
20621
20621
|
}
|
|
20622
20622
|
);
|
|
20623
20623
|
});
|
|
20624
|
-
MenuDropdown.classes = classes$
|
|
20624
|
+
MenuDropdown.classes = classes$d;
|
|
20625
20625
|
MenuDropdown.displayName = "@mantine/core/MenuDropdown";
|
|
20626
20626
|
const [SubMenuProvider, useSubMenuContext] = createOptionalContext();
|
|
20627
20627
|
const MenuItem$1 = polymorphicFactory((props, ref) => {
|
|
@@ -20700,7 +20700,7 @@ const MenuItem$1 = polymorphicFactory((props, ref) => {
|
|
|
20700
20700
|
}
|
|
20701
20701
|
);
|
|
20702
20702
|
});
|
|
20703
|
-
MenuItem$1.classes = classes$
|
|
20703
|
+
MenuItem$1.classes = classes$d;
|
|
20704
20704
|
MenuItem$1.displayName = "@mantine/core/MenuItem";
|
|
20705
20705
|
const MenuLabel = factory((props, ref) => {
|
|
20706
20706
|
const { classNames, className, style: style2, styles: styles2, vars, ...others } = useProps(
|
|
@@ -20718,7 +20718,7 @@ const MenuLabel = factory((props, ref) => {
|
|
|
20718
20718
|
}
|
|
20719
20719
|
);
|
|
20720
20720
|
});
|
|
20721
|
-
MenuLabel.classes = classes$
|
|
20721
|
+
MenuLabel.classes = classes$d;
|
|
20722
20722
|
MenuLabel.displayName = "@mantine/core/MenuLabel";
|
|
20723
20723
|
const MenuSubDropdown = factory((props, ref) => {
|
|
20724
20724
|
const {
|
|
@@ -20760,7 +20760,7 @@ const MenuSubDropdown = factory((props, ref) => {
|
|
|
20760
20760
|
}
|
|
20761
20761
|
);
|
|
20762
20762
|
});
|
|
20763
|
-
MenuSubDropdown.classes = classes$
|
|
20763
|
+
MenuSubDropdown.classes = classes$d;
|
|
20764
20764
|
MenuSubDropdown.displayName = "@mantine/core/MenuSubDropdown";
|
|
20765
20765
|
const MenuSubItem = polymorphicFactory((props, ref) => {
|
|
20766
20766
|
const {
|
|
@@ -20842,7 +20842,7 @@ const MenuSubItem = polymorphicFactory((props, ref) => {
|
|
|
20842
20842
|
}
|
|
20843
20843
|
);
|
|
20844
20844
|
});
|
|
20845
|
-
MenuSubItem.classes = classes$
|
|
20845
|
+
MenuSubItem.classes = classes$d;
|
|
20846
20846
|
MenuSubItem.displayName = "@mantine/core/MenuSubItem";
|
|
20847
20847
|
function MenuSubTarget({ children, refProp }) {
|
|
20848
20848
|
if (!isElement$1(children)) {
|
|
@@ -20854,13 +20854,13 @@ function MenuSubTarget({ children, refProp }) {
|
|
|
20854
20854
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Popover.Target, { refProp, popupType: "menu", children });
|
|
20855
20855
|
}
|
|
20856
20856
|
MenuSubTarget.displayName = "@mantine/core/MenuSubTarget";
|
|
20857
|
-
const defaultProps$
|
|
20857
|
+
const defaultProps$n = {
|
|
20858
20858
|
offset: 0,
|
|
20859
20859
|
position: "right-start",
|
|
20860
20860
|
transitionProps: { duration: 0 }
|
|
20861
20861
|
};
|
|
20862
20862
|
function MenuSub(_props) {
|
|
20863
|
-
const { children, closeDelay, ...others } = useProps("MenuSub", defaultProps$
|
|
20863
|
+
const { children, closeDelay, ...others } = useProps("MenuSub", defaultProps$n, _props);
|
|
20864
20864
|
const id = useId$1();
|
|
20865
20865
|
const [opened, { open, close }] = useDisclosure(false);
|
|
20866
20866
|
const ctx = useSubMenuContext();
|
|
@@ -20898,11 +20898,11 @@ MenuSub.displayName = "@mantine/core/MenuSub";
|
|
|
20898
20898
|
MenuSub.Target = MenuSubTarget;
|
|
20899
20899
|
MenuSub.Dropdown = MenuSubDropdown;
|
|
20900
20900
|
MenuSub.Item = MenuSubItem;
|
|
20901
|
-
const defaultProps$
|
|
20901
|
+
const defaultProps$m = {
|
|
20902
20902
|
refProp: "ref"
|
|
20903
20903
|
};
|
|
20904
20904
|
const MenuTarget = reactExports.forwardRef((props, ref) => {
|
|
20905
|
-
const { children, refProp, ...others } = useProps("MenuTarget", defaultProps$
|
|
20905
|
+
const { children, refProp, ...others } = useProps("MenuTarget", defaultProps$m, props);
|
|
20906
20906
|
if (!isElement$1(children)) {
|
|
20907
20907
|
throw new Error(
|
|
20908
20908
|
"Menu.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported"
|
|
@@ -20939,7 +20939,7 @@ const MenuTarget = reactExports.forwardRef((props, ref) => {
|
|
|
20939
20939
|
}) });
|
|
20940
20940
|
});
|
|
20941
20941
|
MenuTarget.displayName = "@mantine/core/MenuTarget";
|
|
20942
|
-
const defaultProps$
|
|
20942
|
+
const defaultProps$l = {
|
|
20943
20943
|
trapFocus: true,
|
|
20944
20944
|
closeOnItemClick: true,
|
|
20945
20945
|
withInitialFocusPlaceholder: true,
|
|
@@ -20951,7 +20951,7 @@ const defaultProps$h = {
|
|
|
20951
20951
|
menuItemTabIndex: -1
|
|
20952
20952
|
};
|
|
20953
20953
|
function Menu(_props) {
|
|
20954
|
-
const props = useProps("Menu", defaultProps$
|
|
20954
|
+
const props = useProps("Menu", defaultProps$l, _props);
|
|
20955
20955
|
const {
|
|
20956
20956
|
children,
|
|
20957
20957
|
onOpen,
|
|
@@ -20979,7 +20979,7 @@ function Menu(_props) {
|
|
|
20979
20979
|
} = props;
|
|
20980
20980
|
const getStyles2 = useStyles({
|
|
20981
20981
|
name: "Menu",
|
|
20982
|
-
classes: classes$
|
|
20982
|
+
classes: classes$d,
|
|
20983
20983
|
props,
|
|
20984
20984
|
classNames,
|
|
20985
20985
|
styles: styles2,
|
|
@@ -21055,7 +21055,7 @@ function Menu(_props) {
|
|
|
21055
21055
|
}
|
|
21056
21056
|
Menu.extend = (input) => input;
|
|
21057
21057
|
Menu.withProps = getWithProps(Menu);
|
|
21058
|
-
Menu.classes = classes$
|
|
21058
|
+
Menu.classes = classes$d;
|
|
21059
21059
|
Menu.displayName = "@mantine/core/Menu";
|
|
21060
21060
|
Menu.Item = MenuItem$1;
|
|
21061
21061
|
Menu.Label = MenuLabel;
|
|
@@ -21066,7 +21066,7 @@ Menu.Sub = MenuSub;
|
|
|
21066
21066
|
const [ModalProvider, useModalContext] = createSafeContext(
|
|
21067
21067
|
"Modal component was not found in tree"
|
|
21068
21068
|
);
|
|
21069
|
-
var classes$
|
|
21069
|
+
var classes$c = { "root": "m_9df02822", "content": "m_54c44539", "inner": "m_1f958f16", "header": "m_d0e2b9cd" };
|
|
21070
21070
|
const ModalBody = factory((_props, ref) => {
|
|
21071
21071
|
const props = useProps("ModalBody", null, _props);
|
|
21072
21072
|
const { classNames, className, style: style2, styles: styles2, vars, ...others } = props;
|
|
@@ -21080,7 +21080,7 @@ const ModalBody = factory((_props, ref) => {
|
|
|
21080
21080
|
}
|
|
21081
21081
|
);
|
|
21082
21082
|
});
|
|
21083
|
-
ModalBody.classes = classes$
|
|
21083
|
+
ModalBody.classes = classes$c;
|
|
21084
21084
|
ModalBody.displayName = "@mantine/core/ModalBody";
|
|
21085
21085
|
const ModalCloseButton = factory((_props, ref) => {
|
|
21086
21086
|
const props = useProps("ModalCloseButton", null, _props);
|
|
@@ -21095,7 +21095,7 @@ const ModalCloseButton = factory((_props, ref) => {
|
|
|
21095
21095
|
}
|
|
21096
21096
|
);
|
|
21097
21097
|
});
|
|
21098
|
-
ModalCloseButton.classes = classes$
|
|
21098
|
+
ModalCloseButton.classes = classes$c;
|
|
21099
21099
|
ModalCloseButton.displayName = "@mantine/core/ModalCloseButton";
|
|
21100
21100
|
const ModalContent = factory((_props, ref) => {
|
|
21101
21101
|
const props = useProps("ModalContent", null, _props);
|
|
@@ -21124,7 +21124,7 @@ const ModalContent = factory((_props, ref) => {
|
|
|
21124
21124
|
}
|
|
21125
21125
|
);
|
|
21126
21126
|
});
|
|
21127
|
-
ModalContent.classes = classes$
|
|
21127
|
+
ModalContent.classes = classes$c;
|
|
21128
21128
|
ModalContent.displayName = "@mantine/core/ModalContent";
|
|
21129
21129
|
const ModalHeader = factory((_props, ref) => {
|
|
21130
21130
|
const props = useProps("ModalHeader", null, _props);
|
|
@@ -21139,7 +21139,7 @@ const ModalHeader = factory((_props, ref) => {
|
|
|
21139
21139
|
}
|
|
21140
21140
|
);
|
|
21141
21141
|
});
|
|
21142
|
-
ModalHeader.classes = classes$
|
|
21142
|
+
ModalHeader.classes = classes$c;
|
|
21143
21143
|
ModalHeader.displayName = "@mantine/core/ModalHeader";
|
|
21144
21144
|
const ModalOverlay = factory((_props, ref) => {
|
|
21145
21145
|
const props = useProps("ModalOverlay", null, _props);
|
|
@@ -21154,9 +21154,9 @@ const ModalOverlay = factory((_props, ref) => {
|
|
|
21154
21154
|
}
|
|
21155
21155
|
);
|
|
21156
21156
|
});
|
|
21157
|
-
ModalOverlay.classes = classes$
|
|
21157
|
+
ModalOverlay.classes = classes$c;
|
|
21158
21158
|
ModalOverlay.displayName = "@mantine/core/ModalOverlay";
|
|
21159
|
-
const defaultProps$
|
|
21159
|
+
const defaultProps$k = {
|
|
21160
21160
|
__staticSelector: "Modal",
|
|
21161
21161
|
closeOnClickOutside: true,
|
|
21162
21162
|
withinPortal: true,
|
|
@@ -21169,7 +21169,7 @@ const defaultProps$g = {
|
|
|
21169
21169
|
transitionProps: { duration: 200, transition: "fade-down" },
|
|
21170
21170
|
yOffset: "5dvh"
|
|
21171
21171
|
};
|
|
21172
|
-
const varsResolver$
|
|
21172
|
+
const varsResolver$e = createVarsResolver(
|
|
21173
21173
|
(_, { radius, size: size2, yOffset, xOffset }) => ({
|
|
21174
21174
|
root: {
|
|
21175
21175
|
"--modal-radius": radius === void 0 ? void 0 : getRadius(radius),
|
|
@@ -21180,7 +21180,7 @@ const varsResolver$c = createVarsResolver(
|
|
|
21180
21180
|
})
|
|
21181
21181
|
);
|
|
21182
21182
|
const ModalRoot = factory((_props, ref) => {
|
|
21183
|
-
const props = useProps("ModalRoot", defaultProps$
|
|
21183
|
+
const props = useProps("ModalRoot", defaultProps$k, _props);
|
|
21184
21184
|
const {
|
|
21185
21185
|
classNames,
|
|
21186
21186
|
className,
|
|
@@ -21200,7 +21200,7 @@ const ModalRoot = factory((_props, ref) => {
|
|
|
21200
21200
|
} = props;
|
|
21201
21201
|
const getStyles2 = useStyles({
|
|
21202
21202
|
name: __staticSelector,
|
|
21203
|
-
classes: classes$
|
|
21203
|
+
classes: classes$c,
|
|
21204
21204
|
props,
|
|
21205
21205
|
className,
|
|
21206
21206
|
style: style2,
|
|
@@ -21209,7 +21209,7 @@ const ModalRoot = factory((_props, ref) => {
|
|
|
21209
21209
|
unstyled,
|
|
21210
21210
|
attributes,
|
|
21211
21211
|
vars,
|
|
21212
|
-
varsResolver: varsResolver$
|
|
21212
|
+
varsResolver: varsResolver$e
|
|
21213
21213
|
});
|
|
21214
21214
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(ModalProvider, { value: { yOffset, scrollAreaComponent, getStyles: getStyles2, fullScreen }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
21215
21215
|
ModalBase,
|
|
@@ -21224,7 +21224,7 @@ const ModalRoot = factory((_props, ref) => {
|
|
|
21224
21224
|
}
|
|
21225
21225
|
) });
|
|
21226
21226
|
});
|
|
21227
|
-
ModalRoot.classes = classes$
|
|
21227
|
+
ModalRoot.classes = classes$c;
|
|
21228
21228
|
ModalRoot.displayName = "@mantine/core/ModalRoot";
|
|
21229
21229
|
const [ModalStackProvider, useModalStackContext] = createOptionalContext();
|
|
21230
21230
|
function ModalStack({ children }) {
|
|
@@ -21264,9 +21264,9 @@ const ModalTitle = factory((_props, ref) => {
|
|
|
21264
21264
|
}
|
|
21265
21265
|
);
|
|
21266
21266
|
});
|
|
21267
|
-
ModalTitle.classes = classes$
|
|
21267
|
+
ModalTitle.classes = classes$c;
|
|
21268
21268
|
ModalTitle.displayName = "@mantine/core/ModalTitle";
|
|
21269
|
-
const defaultProps$
|
|
21269
|
+
const defaultProps$j = {
|
|
21270
21270
|
closeOnClickOutside: true,
|
|
21271
21271
|
withinPortal: true,
|
|
21272
21272
|
lockScroll: true,
|
|
@@ -21292,7 +21292,7 @@ const Modal = factory((_props, ref) => {
|
|
|
21292
21292
|
stackId,
|
|
21293
21293
|
zIndex,
|
|
21294
21294
|
...others
|
|
21295
|
-
} = useProps("Modal", defaultProps$
|
|
21295
|
+
} = useProps("Modal", defaultProps$j, _props);
|
|
21296
21296
|
const ctx = useModalStackContext();
|
|
21297
21297
|
const hasHeader = !!title || withCloseButton;
|
|
21298
21298
|
const stackProps = ctx && stackId ? {
|
|
@@ -21342,7 +21342,7 @@ const Modal = factory((_props, ref) => {
|
|
|
21342
21342
|
}
|
|
21343
21343
|
);
|
|
21344
21344
|
});
|
|
21345
|
-
Modal.classes = classes$
|
|
21345
|
+
Modal.classes = classes$c;
|
|
21346
21346
|
Modal.displayName = "@mantine/core/Modal";
|
|
21347
21347
|
Modal.Root = ModalRoot;
|
|
21348
21348
|
Modal.Overlay = ModalOverlay;
|
|
@@ -21352,8 +21352,257 @@ Modal.Header = ModalHeader;
|
|
|
21352
21352
|
Modal.Title = ModalTitle;
|
|
21353
21353
|
Modal.CloseButton = ModalCloseButton;
|
|
21354
21354
|
Modal.Stack = ModalStack;
|
|
21355
|
+
const [PillsInputProvider, usePillsInputContext] = createOptionalContext();
|
|
21356
|
+
const [PillGroupProvider, usePillGroupContext] = createOptionalContext();
|
|
21357
|
+
var classes$b = { "root": "m_7cda1cd6", "root--default": "m_44da308b", "root--contrast": "m_e3a01f8", "label": "m_1e0e6180", "remove": "m_ae386778", "group": "m_1dcfd90b" };
|
|
21358
|
+
const varsResolver$d = createVarsResolver((_, { gap }, { size: size2 }) => ({
|
|
21359
|
+
group: {
|
|
21360
|
+
"--pg-gap": gap !== void 0 ? getSize(gap) : getSize(size2, "pg-gap")
|
|
21361
|
+
}
|
|
21362
|
+
}));
|
|
21363
|
+
const PillGroup = factory((_props, ref) => {
|
|
21364
|
+
const props = useProps("PillGroup", null, _props);
|
|
21365
|
+
const {
|
|
21366
|
+
classNames,
|
|
21367
|
+
className,
|
|
21368
|
+
style: style2,
|
|
21369
|
+
styles: styles2,
|
|
21370
|
+
unstyled,
|
|
21371
|
+
vars,
|
|
21372
|
+
size: size2,
|
|
21373
|
+
disabled,
|
|
21374
|
+
attributes,
|
|
21375
|
+
...others
|
|
21376
|
+
} = props;
|
|
21377
|
+
const pillsInputCtx = usePillsInputContext();
|
|
21378
|
+
const _size = (pillsInputCtx == null ? void 0 : pillsInputCtx.size) || size2 || void 0;
|
|
21379
|
+
const getStyles2 = useStyles({
|
|
21380
|
+
name: "PillGroup",
|
|
21381
|
+
classes: classes$b,
|
|
21382
|
+
props,
|
|
21383
|
+
className,
|
|
21384
|
+
style: style2,
|
|
21385
|
+
classNames,
|
|
21386
|
+
styles: styles2,
|
|
21387
|
+
unstyled,
|
|
21388
|
+
attributes,
|
|
21389
|
+
vars,
|
|
21390
|
+
varsResolver: varsResolver$d,
|
|
21391
|
+
stylesCtx: { size: _size },
|
|
21392
|
+
rootSelector: "group"
|
|
21393
|
+
});
|
|
21394
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(PillGroupProvider, { value: { size: _size, disabled }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { ref, size: _size, ...getStyles2("group"), ...others }) });
|
|
21395
|
+
});
|
|
21396
|
+
PillGroup.classes = classes$b;
|
|
21397
|
+
PillGroup.displayName = "@mantine/core/PillGroup";
|
|
21398
|
+
const defaultProps$i = {
|
|
21399
|
+
variant: "default"
|
|
21400
|
+
};
|
|
21401
|
+
const varsResolver$c = createVarsResolver((_, { radius }, { size: size2 }) => ({
|
|
21402
|
+
root: {
|
|
21403
|
+
"--pill-fz": getSize(size2, "pill-fz"),
|
|
21404
|
+
"--pill-height": getSize(size2, "pill-height"),
|
|
21405
|
+
"--pill-radius": radius === void 0 ? void 0 : getRadius(radius)
|
|
21406
|
+
}
|
|
21407
|
+
}));
|
|
21408
|
+
const Pill = factory((_props, ref) => {
|
|
21409
|
+
const props = useProps("Pill", defaultProps$i, _props);
|
|
21410
|
+
const {
|
|
21411
|
+
classNames,
|
|
21412
|
+
className,
|
|
21413
|
+
style: style2,
|
|
21414
|
+
styles: styles2,
|
|
21415
|
+
unstyled,
|
|
21416
|
+
vars,
|
|
21417
|
+
variant,
|
|
21418
|
+
children,
|
|
21419
|
+
withRemoveButton,
|
|
21420
|
+
onRemove,
|
|
21421
|
+
removeButtonProps,
|
|
21422
|
+
radius,
|
|
21423
|
+
size: size2,
|
|
21424
|
+
disabled,
|
|
21425
|
+
mod,
|
|
21426
|
+
attributes,
|
|
21427
|
+
...others
|
|
21428
|
+
} = props;
|
|
21429
|
+
const ctx = usePillGroupContext();
|
|
21430
|
+
const pillsInputCtx = usePillsInputContext();
|
|
21431
|
+
const _size = size2 || (ctx == null ? void 0 : ctx.size) || void 0;
|
|
21432
|
+
const _variant = (pillsInputCtx == null ? void 0 : pillsInputCtx.variant) === "filled" ? "contrast" : variant || "default";
|
|
21433
|
+
const getStyles2 = useStyles({
|
|
21434
|
+
name: "Pill",
|
|
21435
|
+
classes: classes$b,
|
|
21436
|
+
props,
|
|
21437
|
+
className,
|
|
21438
|
+
style: style2,
|
|
21439
|
+
classNames,
|
|
21440
|
+
styles: styles2,
|
|
21441
|
+
unstyled,
|
|
21442
|
+
attributes,
|
|
21443
|
+
vars,
|
|
21444
|
+
varsResolver: varsResolver$c,
|
|
21445
|
+
stylesCtx: { size: _size }
|
|
21446
|
+
});
|
|
21447
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
21448
|
+
Box,
|
|
21449
|
+
{
|
|
21450
|
+
component: "span",
|
|
21451
|
+
ref,
|
|
21452
|
+
variant: _variant,
|
|
21453
|
+
size: _size,
|
|
21454
|
+
...getStyles2("root", { variant: _variant }),
|
|
21455
|
+
mod: [
|
|
21456
|
+
{ "with-remove": withRemoveButton && !disabled, disabled: disabled || (ctx == null ? void 0 : ctx.disabled) },
|
|
21457
|
+
mod
|
|
21458
|
+
],
|
|
21459
|
+
...others,
|
|
21460
|
+
children: [
|
|
21461
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { ...getStyles2("label"), children }),
|
|
21462
|
+
withRemoveButton && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
21463
|
+
CloseButton,
|
|
21464
|
+
{
|
|
21465
|
+
variant: "transparent",
|
|
21466
|
+
radius,
|
|
21467
|
+
tabIndex: -1,
|
|
21468
|
+
"aria-hidden": true,
|
|
21469
|
+
unstyled,
|
|
21470
|
+
...removeButtonProps,
|
|
21471
|
+
...getStyles2("remove", {
|
|
21472
|
+
className: removeButtonProps == null ? void 0 : removeButtonProps.className,
|
|
21473
|
+
style: removeButtonProps == null ? void 0 : removeButtonProps.style
|
|
21474
|
+
}),
|
|
21475
|
+
onMouseDown: (event) => {
|
|
21476
|
+
var _a;
|
|
21477
|
+
event.preventDefault();
|
|
21478
|
+
event.stopPropagation();
|
|
21479
|
+
(_a = removeButtonProps == null ? void 0 : removeButtonProps.onMouseDown) == null ? void 0 : _a.call(removeButtonProps, event);
|
|
21480
|
+
},
|
|
21481
|
+
onClick: (event) => {
|
|
21482
|
+
var _a;
|
|
21483
|
+
event.stopPropagation();
|
|
21484
|
+
onRemove == null ? void 0 : onRemove();
|
|
21485
|
+
(_a = removeButtonProps == null ? void 0 : removeButtonProps.onClick) == null ? void 0 : _a.call(removeButtonProps, event);
|
|
21486
|
+
}
|
|
21487
|
+
}
|
|
21488
|
+
)
|
|
21489
|
+
]
|
|
21490
|
+
}
|
|
21491
|
+
);
|
|
21492
|
+
});
|
|
21493
|
+
Pill.classes = classes$b;
|
|
21494
|
+
Pill.displayName = "@mantine/core/Pill";
|
|
21495
|
+
Pill.Group = PillGroup;
|
|
21496
|
+
var classes$a = { "field": "m_45c4369d" };
|
|
21497
|
+
const defaultProps$h = {
|
|
21498
|
+
type: "visible"
|
|
21499
|
+
};
|
|
21500
|
+
const PillsInputField = factory((_props, ref) => {
|
|
21501
|
+
const props = useProps("PillsInputField", defaultProps$h, _props);
|
|
21502
|
+
const {
|
|
21503
|
+
classNames,
|
|
21504
|
+
className,
|
|
21505
|
+
style: style2,
|
|
21506
|
+
styles: styles2,
|
|
21507
|
+
unstyled,
|
|
21508
|
+
vars,
|
|
21509
|
+
type,
|
|
21510
|
+
disabled,
|
|
21511
|
+
id,
|
|
21512
|
+
pointer,
|
|
21513
|
+
mod,
|
|
21514
|
+
attributes,
|
|
21515
|
+
...others
|
|
21516
|
+
} = props;
|
|
21517
|
+
const ctx = usePillsInputContext();
|
|
21518
|
+
const inputWrapperCtx = useInputWrapperContext();
|
|
21519
|
+
const getStyles2 = useStyles({
|
|
21520
|
+
name: "PillsInputField",
|
|
21521
|
+
classes: classes$a,
|
|
21522
|
+
props,
|
|
21523
|
+
className,
|
|
21524
|
+
style: style2,
|
|
21525
|
+
classNames,
|
|
21526
|
+
styles: styles2,
|
|
21527
|
+
unstyled,
|
|
21528
|
+
attributes,
|
|
21529
|
+
rootSelector: "field"
|
|
21530
|
+
});
|
|
21531
|
+
const _disabled = disabled || (ctx == null ? void 0 : ctx.disabled);
|
|
21532
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
21533
|
+
Box,
|
|
21534
|
+
{
|
|
21535
|
+
component: "input",
|
|
21536
|
+
ref: useMergedRef(ref, ctx == null ? void 0 : ctx.fieldRef),
|
|
21537
|
+
"data-type": type,
|
|
21538
|
+
disabled: _disabled,
|
|
21539
|
+
mod: [{ disabled: _disabled, pointer }, mod],
|
|
21540
|
+
...getStyles2("field"),
|
|
21541
|
+
...others,
|
|
21542
|
+
id: (inputWrapperCtx == null ? void 0 : inputWrapperCtx.inputId) || id,
|
|
21543
|
+
"aria-invalid": ctx == null ? void 0 : ctx.hasError,
|
|
21544
|
+
"aria-describedby": inputWrapperCtx == null ? void 0 : inputWrapperCtx.describedBy,
|
|
21545
|
+
type: "text",
|
|
21546
|
+
onMouseDown: (event) => !pointer && event.stopPropagation()
|
|
21547
|
+
}
|
|
21548
|
+
);
|
|
21549
|
+
});
|
|
21550
|
+
PillsInputField.classes = classes$a;
|
|
21551
|
+
PillsInputField.displayName = "@mantine/core/PillsInputField";
|
|
21552
|
+
const defaultProps$g = {
|
|
21553
|
+
size: "sm"
|
|
21554
|
+
};
|
|
21555
|
+
const PillsInput = factory((_props, ref) => {
|
|
21556
|
+
const props = useProps("PillsInput", defaultProps$g, _props);
|
|
21557
|
+
const {
|
|
21558
|
+
children,
|
|
21559
|
+
onMouseDown,
|
|
21560
|
+
onClick,
|
|
21561
|
+
size: size2,
|
|
21562
|
+
disabled,
|
|
21563
|
+
__staticSelector,
|
|
21564
|
+
error,
|
|
21565
|
+
variant,
|
|
21566
|
+
...others
|
|
21567
|
+
} = props;
|
|
21568
|
+
const fieldRef = reactExports.useRef(null);
|
|
21569
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(PillsInputProvider, { value: { fieldRef, size: size2, disabled, hasError: !!error, variant }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
21570
|
+
InputBase,
|
|
21571
|
+
{
|
|
21572
|
+
size: size2,
|
|
21573
|
+
error,
|
|
21574
|
+
variant,
|
|
21575
|
+
component: "div",
|
|
21576
|
+
ref,
|
|
21577
|
+
"data-no-overflow": true,
|
|
21578
|
+
onMouseDown: (event) => {
|
|
21579
|
+
var _a;
|
|
21580
|
+
event.preventDefault();
|
|
21581
|
+
onMouseDown == null ? void 0 : onMouseDown(event);
|
|
21582
|
+
(_a = fieldRef.current) == null ? void 0 : _a.focus();
|
|
21583
|
+
},
|
|
21584
|
+
onClick: (event) => {
|
|
21585
|
+
var _a;
|
|
21586
|
+
event.preventDefault();
|
|
21587
|
+
const fieldset = event.currentTarget.closest("fieldset");
|
|
21588
|
+
if (!(fieldset == null ? void 0 : fieldset.disabled)) {
|
|
21589
|
+
(_a = fieldRef.current) == null ? void 0 : _a.focus();
|
|
21590
|
+
onClick == null ? void 0 : onClick(event);
|
|
21591
|
+
}
|
|
21592
|
+
},
|
|
21593
|
+
...others,
|
|
21594
|
+
multiline: true,
|
|
21595
|
+
disabled,
|
|
21596
|
+
__staticSelector: __staticSelector || "PillsInput",
|
|
21597
|
+
withAria: false,
|
|
21598
|
+
children
|
|
21599
|
+
}
|
|
21600
|
+
) });
|
|
21601
|
+
});
|
|
21602
|
+
PillsInput.displayName = "@mantine/core/PillsInput";
|
|
21603
|
+
PillsInput.Field = PillsInputField;
|
|
21355
21604
|
var classes$9 = { "root": "m_a513464", "icon": "m_a4ceffb", "loader": "m_b0920b15", "body": "m_a49ed24", "title": "m_3feedf16", "description": "m_3d733a3a", "closeButton": "m_919a4d88" };
|
|
21356
|
-
const defaultProps$
|
|
21605
|
+
const defaultProps$f = {
|
|
21357
21606
|
withCloseButton: true
|
|
21358
21607
|
};
|
|
21359
21608
|
const varsResolver$b = createVarsResolver((theme2, { radius, color: color2 }) => ({
|
|
@@ -21363,7 +21612,7 @@ const varsResolver$b = createVarsResolver((theme2, { radius, color: color2 }) =>
|
|
|
21363
21612
|
}
|
|
21364
21613
|
}));
|
|
21365
21614
|
const Notification = factory((_props, ref) => {
|
|
21366
|
-
const props = useProps("Notification", defaultProps$
|
|
21615
|
+
const props = useProps("Notification", defaultProps$f, _props);
|
|
21367
21616
|
const {
|
|
21368
21617
|
className,
|
|
21369
21618
|
color: color2,
|
|
@@ -21499,7 +21748,7 @@ function useFloatingTooltip({
|
|
|
21499
21748
|
return { handleMouseMove, x, y, opened, setOpened, boundaryRef, floating: refs.setFloating };
|
|
21500
21749
|
}
|
|
21501
21750
|
var classes$8 = { "tooltip": "m_1b3c8819", "arrow": "m_f898399f" };
|
|
21502
|
-
const defaultProps$
|
|
21751
|
+
const defaultProps$e = {
|
|
21503
21752
|
refProp: "ref",
|
|
21504
21753
|
withinPortal: true,
|
|
21505
21754
|
offset: 10,
|
|
@@ -21514,7 +21763,7 @@ const varsResolver$a = createVarsResolver((theme2, { radius, color: color2 }) =>
|
|
|
21514
21763
|
}
|
|
21515
21764
|
}));
|
|
21516
21765
|
const TooltipFloating = factory((_props, ref) => {
|
|
21517
|
-
const props = useProps("TooltipFloating", defaultProps$
|
|
21766
|
+
const props = useProps("TooltipFloating", defaultProps$e, _props);
|
|
21518
21767
|
const {
|
|
21519
21768
|
children,
|
|
21520
21769
|
refProp,
|
|
@@ -21610,12 +21859,12 @@ TooltipFloating.displayName = "@mantine/core/TooltipFloating";
|
|
|
21610
21859
|
const TooltipGroupContext = reactExports.createContext(false);
|
|
21611
21860
|
const TooltipGroupProvider = TooltipGroupContext.Provider;
|
|
21612
21861
|
const useTooltipGroupContext = () => reactExports.useContext(TooltipGroupContext);
|
|
21613
|
-
const defaultProps$
|
|
21862
|
+
const defaultProps$d = {
|
|
21614
21863
|
openDelay: 0,
|
|
21615
21864
|
closeDelay: 0
|
|
21616
21865
|
};
|
|
21617
21866
|
function TooltipGroup(props) {
|
|
21618
|
-
const { openDelay, closeDelay, children } = useProps("TooltipGroup", defaultProps$
|
|
21867
|
+
const { openDelay, closeDelay, children } = useProps("TooltipGroup", defaultProps$d, props);
|
|
21619
21868
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipGroupProvider, { value: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FloatingDelayGroup, { delay: { open: openDelay, close: closeDelay }, children }) });
|
|
21620
21869
|
}
|
|
21621
21870
|
TooltipGroup.displayName = "@mantine/core/TooltipGroup";
|
|
@@ -21720,7 +21969,7 @@ function useTooltip(settings) {
|
|
|
21720
21969
|
placement
|
|
21721
21970
|
};
|
|
21722
21971
|
}
|
|
21723
|
-
const defaultProps$
|
|
21972
|
+
const defaultProps$c = {
|
|
21724
21973
|
position: "top",
|
|
21725
21974
|
refProp: "ref",
|
|
21726
21975
|
withinPortal: true,
|
|
@@ -21753,7 +22002,7 @@ const varsResolver$9 = createVarsResolver(
|
|
|
21753
22002
|
}
|
|
21754
22003
|
);
|
|
21755
22004
|
const Tooltip = factory((_props, ref) => {
|
|
21756
|
-
const props = useProps("Tooltip", defaultProps$
|
|
22005
|
+
const props = useProps("Tooltip", defaultProps$c, _props);
|
|
21757
22006
|
const {
|
|
21758
22007
|
children,
|
|
21759
22008
|
position: position2,
|
|
@@ -21801,7 +22050,7 @@ const Tooltip = factory((_props, ref) => {
|
|
|
21801
22050
|
attributes,
|
|
21802
22051
|
target,
|
|
21803
22052
|
...others
|
|
21804
|
-
} = useProps("Tooltip", defaultProps$
|
|
22053
|
+
} = useProps("Tooltip", defaultProps$c, props);
|
|
21805
22054
|
const { dir } = useDirection();
|
|
21806
22055
|
const arrowRef = reactExports.useRef(null);
|
|
21807
22056
|
const tooltip = useTooltip({
|
|
@@ -21965,13 +22214,13 @@ Tooltip.classes = classes$8;
|
|
|
21965
22214
|
Tooltip.displayName = "@mantine/core/Tooltip";
|
|
21966
22215
|
Tooltip.Floating = TooltipFloating;
|
|
21967
22216
|
Tooltip.Group = TooltipGroup;
|
|
21968
|
-
const defaultProps$
|
|
22217
|
+
const defaultProps$b = {
|
|
21969
22218
|
withCheckIcon: true,
|
|
21970
22219
|
allowDeselect: true,
|
|
21971
22220
|
checkIconPosition: "left"
|
|
21972
22221
|
};
|
|
21973
22222
|
const Select = factory((_props, ref) => {
|
|
21974
|
-
const props = useProps("Select", defaultProps$
|
|
22223
|
+
const props = useProps("Select", defaultProps$b, _props);
|
|
21975
22224
|
const {
|
|
21976
22225
|
classNames,
|
|
21977
22226
|
styles: styles2,
|
|
@@ -22213,7 +22462,7 @@ const Select = factory((_props, ref) => {
|
|
|
22213
22462
|
Select.classes = { ...InputBase.classes, ...Combobox.classes };
|
|
22214
22463
|
Select.displayName = "@mantine/core/Select";
|
|
22215
22464
|
var classes$7 = { "root": "m_6d731127" };
|
|
22216
|
-
const defaultProps$
|
|
22465
|
+
const defaultProps$a = {
|
|
22217
22466
|
gap: "md",
|
|
22218
22467
|
align: "stretch",
|
|
22219
22468
|
justify: "flex-start"
|
|
@@ -22226,7 +22475,7 @@ const varsResolver$8 = createVarsResolver((_, { gap, align, justify }) => ({
|
|
|
22226
22475
|
}
|
|
22227
22476
|
}));
|
|
22228
22477
|
const Stack = factory((_props, ref) => {
|
|
22229
|
-
const props = useProps("Stack", defaultProps$
|
|
22478
|
+
const props = useProps("Stack", defaultProps$a, _props);
|
|
22230
22479
|
const {
|
|
22231
22480
|
classNames,
|
|
22232
22481
|
className,
|
|
@@ -22270,7 +22519,7 @@ const getStepFragment = (Fragment, step) => {
|
|
|
22270
22519
|
}
|
|
22271
22520
|
return Fragment;
|
|
22272
22521
|
};
|
|
22273
|
-
const defaultProps$
|
|
22522
|
+
const defaultProps$9 = {
|
|
22274
22523
|
withIcon: true,
|
|
22275
22524
|
allowStepClick: true,
|
|
22276
22525
|
iconPosition: "left"
|
|
@@ -22299,7 +22548,7 @@ const StepperStep = factory((props, ref) => {
|
|
|
22299
22548
|
orientation,
|
|
22300
22549
|
mod,
|
|
22301
22550
|
...others
|
|
22302
|
-
} = useProps("StepperStep", defaultProps$
|
|
22551
|
+
} = useProps("StepperStep", defaultProps$9, props);
|
|
22303
22552
|
const ctx = useStepperContext();
|
|
22304
22553
|
const theme2 = useMantineTheme();
|
|
22305
22554
|
const stylesApi = { classNames, styles: styles2 };
|
|
@@ -22373,7 +22622,7 @@ const StepperStep = factory((props, ref) => {
|
|
|
22373
22622
|
});
|
|
22374
22623
|
StepperStep.classes = classes$6;
|
|
22375
22624
|
StepperStep.displayName = "@mantine/core/StepperStep";
|
|
22376
|
-
const defaultProps$
|
|
22625
|
+
const defaultProps$8 = {
|
|
22377
22626
|
orientation: "horizontal",
|
|
22378
22627
|
iconPosition: "left",
|
|
22379
22628
|
allowNextStepsSelect: true,
|
|
@@ -22394,7 +22643,7 @@ const varsResolver$7 = createVarsResolver(
|
|
|
22394
22643
|
);
|
|
22395
22644
|
const Stepper = factory((_props, ref) => {
|
|
22396
22645
|
var _a, _b, _c;
|
|
22397
|
-
const props = useProps("Stepper", defaultProps$
|
|
22646
|
+
const props = useProps("Stepper", defaultProps$8, _props);
|
|
22398
22647
|
const {
|
|
22399
22648
|
classNames,
|
|
22400
22649
|
className,
|
|
@@ -22543,7 +22792,7 @@ const SwitchGroup = factory((props, ref) => {
|
|
|
22543
22792
|
SwitchGroup.classes = Input.Wrapper.classes;
|
|
22544
22793
|
SwitchGroup.displayName = "@mantine/core/SwitchGroup";
|
|
22545
22794
|
var classes$5 = { "root": "m_5f93f3bb", "input": "m_926b4011", "track": "m_9307d992", "thumb": "m_93039a1d", "trackLabel": "m_8277e082" };
|
|
22546
|
-
const defaultProps$
|
|
22795
|
+
const defaultProps$7 = {
|
|
22547
22796
|
labelPosition: "right",
|
|
22548
22797
|
withThumbIndicator: true
|
|
22549
22798
|
};
|
|
@@ -22559,7 +22808,7 @@ const varsResolver$6 = createVarsResolver((theme2, { radius, color: color2, size
|
|
|
22559
22808
|
}
|
|
22560
22809
|
}));
|
|
22561
22810
|
const Switch = factory((_props, ref) => {
|
|
22562
|
-
const props = useProps("Switch", defaultProps$
|
|
22811
|
+
const props = useProps("Switch", defaultProps$7, _props);
|
|
22563
22812
|
const {
|
|
22564
22813
|
classNames,
|
|
22565
22814
|
className,
|
|
@@ -22758,7 +23007,7 @@ function TableDataRenderer({ data }) {
|
|
|
22758
23007
|
] });
|
|
22759
23008
|
}
|
|
22760
23009
|
TableDataRenderer.displayName = "@mantine/core/TableDataRenderer";
|
|
22761
|
-
const defaultProps$
|
|
23010
|
+
const defaultProps$6 = {
|
|
22762
23011
|
type: "scrollarea"
|
|
22763
23012
|
};
|
|
22764
23013
|
const varsResolver$5 = createVarsResolver(
|
|
@@ -22771,7 +23020,7 @@ const varsResolver$5 = createVarsResolver(
|
|
|
22771
23020
|
})
|
|
22772
23021
|
);
|
|
22773
23022
|
const TableScrollContainer = factory((_props, ref) => {
|
|
22774
|
-
const props = useProps("TableScrollContainer", defaultProps$
|
|
23023
|
+
const props = useProps("TableScrollContainer", defaultProps$6, _props);
|
|
22775
23024
|
const {
|
|
22776
23025
|
classNames,
|
|
22777
23026
|
className,
|
|
@@ -22815,7 +23064,7 @@ const TableScrollContainer = factory((_props, ref) => {
|
|
|
22815
23064
|
});
|
|
22816
23065
|
TableScrollContainer.classes = classes$4;
|
|
22817
23066
|
TableScrollContainer.displayName = "@mantine/core/TableScrollContainer";
|
|
22818
|
-
const defaultProps$
|
|
23067
|
+
const defaultProps$5 = {
|
|
22819
23068
|
withRowBorders: true,
|
|
22820
23069
|
verticalSpacing: 7
|
|
22821
23070
|
};
|
|
@@ -22846,7 +23095,7 @@ const varsResolver$4 = createVarsResolver(
|
|
|
22846
23095
|
})
|
|
22847
23096
|
);
|
|
22848
23097
|
const Table = factory((_props, ref) => {
|
|
22849
|
-
const props = useProps("Table", defaultProps$
|
|
23098
|
+
const props = useProps("Table", defaultProps$5, _props);
|
|
22850
23099
|
const {
|
|
22851
23100
|
classNames,
|
|
22852
23101
|
className,
|
|
@@ -23071,7 +23320,7 @@ const TabsTab = factory((_props, ref) => {
|
|
|
23071
23320
|
TabsTab.classes = classes$3;
|
|
23072
23321
|
TabsTab.displayName = "@mantine/core/TabsTab";
|
|
23073
23322
|
const VALUE_ERROR = "Tabs.Tab or Tabs.Panel component was rendered with invalid value or without value";
|
|
23074
|
-
const defaultProps$
|
|
23323
|
+
const defaultProps$4 = {
|
|
23075
23324
|
keepMounted: true,
|
|
23076
23325
|
orientation: "horizontal",
|
|
23077
23326
|
loop: true,
|
|
@@ -23087,7 +23336,7 @@ const varsResolver$3 = createVarsResolver((theme2, { radius, color: color2, auto
|
|
|
23087
23336
|
}
|
|
23088
23337
|
}));
|
|
23089
23338
|
const Tabs = factory((_props, ref) => {
|
|
23090
|
-
const props = useProps("Tabs", defaultProps$
|
|
23339
|
+
const props = useProps("Tabs", defaultProps$4, _props);
|
|
23091
23340
|
const {
|
|
23092
23341
|
defaultValue: defaultValue2,
|
|
23093
23342
|
value: value2,
|
|
@@ -23184,6 +23433,399 @@ Tabs.displayName = "@mantine/core/Tabs";
|
|
|
23184
23433
|
Tabs.Tab = TabsTab;
|
|
23185
23434
|
Tabs.Panel = TabsPanel;
|
|
23186
23435
|
Tabs.List = TabsList;
|
|
23436
|
+
function filterPickedTags({ data, value: value2 }) {
|
|
23437
|
+
const normalizedValue = value2.map((item) => item.trim().toLowerCase());
|
|
23438
|
+
const filtered = data.reduce((acc, item) => {
|
|
23439
|
+
if (isOptionsGroup(item)) {
|
|
23440
|
+
acc.push({
|
|
23441
|
+
group: item.group,
|
|
23442
|
+
items: item.items.filter(
|
|
23443
|
+
(option) => normalizedValue.indexOf(option.label.toLowerCase().trim()) === -1
|
|
23444
|
+
)
|
|
23445
|
+
});
|
|
23446
|
+
} else if (normalizedValue.indexOf(item.label.toLowerCase().trim()) === -1) {
|
|
23447
|
+
acc.push(item);
|
|
23448
|
+
}
|
|
23449
|
+
return acc;
|
|
23450
|
+
}, []);
|
|
23451
|
+
return filtered;
|
|
23452
|
+
}
|
|
23453
|
+
function splitTags(splitChars, value2) {
|
|
23454
|
+
if (!splitChars) {
|
|
23455
|
+
return [value2];
|
|
23456
|
+
}
|
|
23457
|
+
return value2.split(new RegExp(`[${splitChars.join("")}]`)).map((tag) => tag.trim()).filter((tag) => tag !== "");
|
|
23458
|
+
}
|
|
23459
|
+
function getSplittedTags({
|
|
23460
|
+
splitChars,
|
|
23461
|
+
allowDuplicates,
|
|
23462
|
+
maxTags,
|
|
23463
|
+
value: value2,
|
|
23464
|
+
currentTags
|
|
23465
|
+
}) {
|
|
23466
|
+
const splitted = splitTags(splitChars, value2);
|
|
23467
|
+
const merged = allowDuplicates ? [...currentTags, ...splitted] : [.../* @__PURE__ */ new Set([...currentTags, ...splitted])];
|
|
23468
|
+
return maxTags ? merged.slice(0, maxTags) : merged;
|
|
23469
|
+
}
|
|
23470
|
+
const defaultProps$3 = {
|
|
23471
|
+
maxTags: Infinity,
|
|
23472
|
+
acceptValueOnBlur: true,
|
|
23473
|
+
splitChars: [","],
|
|
23474
|
+
hiddenInputValuesDivider: ","
|
|
23475
|
+
};
|
|
23476
|
+
const TagsInput = factory((_props, ref) => {
|
|
23477
|
+
const props = useProps("TagsInput", defaultProps$3, _props);
|
|
23478
|
+
const {
|
|
23479
|
+
classNames,
|
|
23480
|
+
className,
|
|
23481
|
+
style: style2,
|
|
23482
|
+
styles: styles2,
|
|
23483
|
+
unstyled,
|
|
23484
|
+
vars,
|
|
23485
|
+
size: size2,
|
|
23486
|
+
value: value2,
|
|
23487
|
+
defaultValue: defaultValue2,
|
|
23488
|
+
onChange,
|
|
23489
|
+
onKeyDown,
|
|
23490
|
+
maxTags,
|
|
23491
|
+
allowDuplicates,
|
|
23492
|
+
onDuplicate,
|
|
23493
|
+
variant,
|
|
23494
|
+
data,
|
|
23495
|
+
dropdownOpened,
|
|
23496
|
+
defaultDropdownOpened,
|
|
23497
|
+
onDropdownOpen,
|
|
23498
|
+
onDropdownClose,
|
|
23499
|
+
selectFirstOptionOnChange,
|
|
23500
|
+
onOptionSubmit,
|
|
23501
|
+
comboboxProps,
|
|
23502
|
+
filter,
|
|
23503
|
+
limit,
|
|
23504
|
+
withScrollArea,
|
|
23505
|
+
maxDropdownHeight,
|
|
23506
|
+
searchValue,
|
|
23507
|
+
defaultSearchValue,
|
|
23508
|
+
onSearchChange,
|
|
23509
|
+
readOnly,
|
|
23510
|
+
disabled,
|
|
23511
|
+
splitChars,
|
|
23512
|
+
onFocus,
|
|
23513
|
+
onBlur,
|
|
23514
|
+
onPaste,
|
|
23515
|
+
radius,
|
|
23516
|
+
rightSection,
|
|
23517
|
+
rightSectionWidth,
|
|
23518
|
+
rightSectionPointerEvents,
|
|
23519
|
+
rightSectionProps,
|
|
23520
|
+
leftSection,
|
|
23521
|
+
leftSectionWidth,
|
|
23522
|
+
leftSectionPointerEvents,
|
|
23523
|
+
leftSectionProps,
|
|
23524
|
+
inputContainer,
|
|
23525
|
+
inputWrapperOrder,
|
|
23526
|
+
withAsterisk,
|
|
23527
|
+
required,
|
|
23528
|
+
labelProps,
|
|
23529
|
+
descriptionProps,
|
|
23530
|
+
errorProps,
|
|
23531
|
+
wrapperProps,
|
|
23532
|
+
description,
|
|
23533
|
+
label,
|
|
23534
|
+
error,
|
|
23535
|
+
withErrorStyles,
|
|
23536
|
+
name: name2,
|
|
23537
|
+
form,
|
|
23538
|
+
id,
|
|
23539
|
+
clearable,
|
|
23540
|
+
clearButtonProps,
|
|
23541
|
+
hiddenInputProps,
|
|
23542
|
+
hiddenInputValuesDivider,
|
|
23543
|
+
mod,
|
|
23544
|
+
renderOption,
|
|
23545
|
+
onRemove,
|
|
23546
|
+
onClear,
|
|
23547
|
+
scrollAreaProps,
|
|
23548
|
+
acceptValueOnBlur,
|
|
23549
|
+
isDuplicate,
|
|
23550
|
+
attributes,
|
|
23551
|
+
...others
|
|
23552
|
+
} = props;
|
|
23553
|
+
const _id = useId$1(id);
|
|
23554
|
+
const parsedData = getParsedComboboxData(data);
|
|
23555
|
+
const optionsLockup = getOptionsLockup(parsedData);
|
|
23556
|
+
const inputRef = reactExports.useRef(null);
|
|
23557
|
+
const _ref = useMergedRef(inputRef, ref);
|
|
23558
|
+
const combobox = useCombobox({
|
|
23559
|
+
opened: dropdownOpened,
|
|
23560
|
+
defaultOpened: defaultDropdownOpened,
|
|
23561
|
+
onDropdownOpen,
|
|
23562
|
+
onDropdownClose: () => {
|
|
23563
|
+
onDropdownClose == null ? void 0 : onDropdownClose();
|
|
23564
|
+
combobox.resetSelectedOption();
|
|
23565
|
+
}
|
|
23566
|
+
});
|
|
23567
|
+
const {
|
|
23568
|
+
styleProps,
|
|
23569
|
+
rest: { type, autoComplete, ...rest }
|
|
23570
|
+
} = extractStyleProps(others);
|
|
23571
|
+
const [_value, setValue] = useUncontrolled({
|
|
23572
|
+
value: value2,
|
|
23573
|
+
defaultValue: defaultValue2,
|
|
23574
|
+
finalValue: [],
|
|
23575
|
+
onChange
|
|
23576
|
+
});
|
|
23577
|
+
const [_searchValue, setSearchValue] = useUncontrolled({
|
|
23578
|
+
value: searchValue,
|
|
23579
|
+
defaultValue: defaultSearchValue,
|
|
23580
|
+
finalValue: "",
|
|
23581
|
+
onChange: onSearchChange
|
|
23582
|
+
});
|
|
23583
|
+
const handleSearchChange = (value22) => {
|
|
23584
|
+
setSearchValue(value22);
|
|
23585
|
+
combobox.resetSelectedOption();
|
|
23586
|
+
};
|
|
23587
|
+
const getStyles2 = useStyles({
|
|
23588
|
+
name: "TagsInput",
|
|
23589
|
+
classes: {},
|
|
23590
|
+
props,
|
|
23591
|
+
classNames,
|
|
23592
|
+
styles: styles2,
|
|
23593
|
+
unstyled
|
|
23594
|
+
});
|
|
23595
|
+
const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({
|
|
23596
|
+
props,
|
|
23597
|
+
styles: styles2,
|
|
23598
|
+
classNames
|
|
23599
|
+
});
|
|
23600
|
+
const handleValueSelect = (val) => {
|
|
23601
|
+
const isDuplicated = isDuplicate ? isDuplicate(val, _value) : _value.some((tag) => tag.toLowerCase() === val.toLowerCase());
|
|
23602
|
+
if (isDuplicated) {
|
|
23603
|
+
onDuplicate == null ? void 0 : onDuplicate(val);
|
|
23604
|
+
}
|
|
23605
|
+
if ((!isDuplicated || isDuplicated && allowDuplicates) && _value.length < maxTags) {
|
|
23606
|
+
onOptionSubmit == null ? void 0 : onOptionSubmit(val);
|
|
23607
|
+
handleSearchChange("");
|
|
23608
|
+
if (val.length > 0) {
|
|
23609
|
+
setValue([..._value, val]);
|
|
23610
|
+
}
|
|
23611
|
+
}
|
|
23612
|
+
};
|
|
23613
|
+
const handleInputKeydown = (event) => {
|
|
23614
|
+
onKeyDown == null ? void 0 : onKeyDown(event);
|
|
23615
|
+
if (event.isPropagationStopped()) {
|
|
23616
|
+
return;
|
|
23617
|
+
}
|
|
23618
|
+
const inputValue = _searchValue.trim();
|
|
23619
|
+
const { length } = inputValue;
|
|
23620
|
+
if (splitChars.includes(event.key) && length > 0) {
|
|
23621
|
+
setValue(
|
|
23622
|
+
getSplittedTags({
|
|
23623
|
+
splitChars,
|
|
23624
|
+
allowDuplicates,
|
|
23625
|
+
maxTags,
|
|
23626
|
+
value: _searchValue,
|
|
23627
|
+
currentTags: _value
|
|
23628
|
+
})
|
|
23629
|
+
);
|
|
23630
|
+
handleSearchChange("");
|
|
23631
|
+
event.preventDefault();
|
|
23632
|
+
}
|
|
23633
|
+
if (event.key === "Enter" && length > 0 && !event.nativeEvent.isComposing) {
|
|
23634
|
+
event.preventDefault();
|
|
23635
|
+
const hasActiveSelection = !!document.querySelector(
|
|
23636
|
+
`#${combobox.listId} [data-combobox-option][data-combobox-selected]`
|
|
23637
|
+
);
|
|
23638
|
+
if (hasActiveSelection) {
|
|
23639
|
+
return;
|
|
23640
|
+
}
|
|
23641
|
+
handleValueSelect(inputValue);
|
|
23642
|
+
}
|
|
23643
|
+
if (event.key === "Backspace" && length === 0 && _value.length > 0 && !event.nativeEvent.isComposing) {
|
|
23644
|
+
onRemove == null ? void 0 : onRemove(_value[_value.length - 1]);
|
|
23645
|
+
setValue(_value.slice(0, _value.length - 1));
|
|
23646
|
+
}
|
|
23647
|
+
};
|
|
23648
|
+
const handlePaste = (event) => {
|
|
23649
|
+
onPaste == null ? void 0 : onPaste(event);
|
|
23650
|
+
event.preventDefault();
|
|
23651
|
+
if (event.clipboardData) {
|
|
23652
|
+
const pastedText = event.clipboardData.getData("text/plain");
|
|
23653
|
+
setValue(
|
|
23654
|
+
getSplittedTags({
|
|
23655
|
+
splitChars,
|
|
23656
|
+
allowDuplicates,
|
|
23657
|
+
maxTags,
|
|
23658
|
+
value: `${_searchValue}${pastedText}`,
|
|
23659
|
+
currentTags: _value
|
|
23660
|
+
})
|
|
23661
|
+
);
|
|
23662
|
+
handleSearchChange("");
|
|
23663
|
+
}
|
|
23664
|
+
};
|
|
23665
|
+
const values2 = _value.map((item, index2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
23666
|
+
Pill,
|
|
23667
|
+
{
|
|
23668
|
+
withRemoveButton: !readOnly,
|
|
23669
|
+
onRemove: () => {
|
|
23670
|
+
const next_value = _value.slice();
|
|
23671
|
+
next_value.splice(index2, 1);
|
|
23672
|
+
setValue(next_value);
|
|
23673
|
+
onRemove == null ? void 0 : onRemove(item);
|
|
23674
|
+
},
|
|
23675
|
+
unstyled,
|
|
23676
|
+
disabled,
|
|
23677
|
+
attributes,
|
|
23678
|
+
...getStyles2("pill"),
|
|
23679
|
+
children: item
|
|
23680
|
+
},
|
|
23681
|
+
`${item}-${index2}`
|
|
23682
|
+
));
|
|
23683
|
+
reactExports.useEffect(() => {
|
|
23684
|
+
if (selectFirstOptionOnChange) {
|
|
23685
|
+
combobox.selectFirstOption();
|
|
23686
|
+
}
|
|
23687
|
+
}, [selectFirstOptionOnChange, _value, _searchValue]);
|
|
23688
|
+
const clearButton = /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
23689
|
+
Combobox.ClearButton,
|
|
23690
|
+
{
|
|
23691
|
+
...clearButtonProps,
|
|
23692
|
+
onClear: () => {
|
|
23693
|
+
var _a;
|
|
23694
|
+
setValue([]);
|
|
23695
|
+
handleSearchChange("");
|
|
23696
|
+
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
23697
|
+
combobox.openDropdown();
|
|
23698
|
+
onClear == null ? void 0 : onClear();
|
|
23699
|
+
}
|
|
23700
|
+
}
|
|
23701
|
+
);
|
|
23702
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
23703
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
23704
|
+
Combobox,
|
|
23705
|
+
{
|
|
23706
|
+
store: combobox,
|
|
23707
|
+
classNames: resolvedClassNames,
|
|
23708
|
+
styles: resolvedStyles,
|
|
23709
|
+
unstyled,
|
|
23710
|
+
size: size2,
|
|
23711
|
+
readOnly,
|
|
23712
|
+
__staticSelector: "TagsInput",
|
|
23713
|
+
attributes,
|
|
23714
|
+
onOptionSubmit: (val) => {
|
|
23715
|
+
onOptionSubmit == null ? void 0 : onOptionSubmit(val);
|
|
23716
|
+
handleSearchChange("");
|
|
23717
|
+
_value.length < maxTags && setValue([..._value, optionsLockup[val].label]);
|
|
23718
|
+
combobox.resetSelectedOption();
|
|
23719
|
+
},
|
|
23720
|
+
...comboboxProps,
|
|
23721
|
+
children: [
|
|
23722
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Combobox.DropdownTarget, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
23723
|
+
PillsInput,
|
|
23724
|
+
{
|
|
23725
|
+
...styleProps,
|
|
23726
|
+
__staticSelector: "TagsInput",
|
|
23727
|
+
classNames: resolvedClassNames,
|
|
23728
|
+
styles: resolvedStyles,
|
|
23729
|
+
unstyled,
|
|
23730
|
+
size: size2,
|
|
23731
|
+
className,
|
|
23732
|
+
style: style2,
|
|
23733
|
+
variant,
|
|
23734
|
+
disabled,
|
|
23735
|
+
radius,
|
|
23736
|
+
rightSection,
|
|
23737
|
+
__clearSection: clearButton,
|
|
23738
|
+
__clearable: clearable && _value.length > 0 && !disabled && !readOnly,
|
|
23739
|
+
rightSectionWidth,
|
|
23740
|
+
rightSectionPointerEvents,
|
|
23741
|
+
rightSectionProps,
|
|
23742
|
+
leftSection,
|
|
23743
|
+
leftSectionWidth,
|
|
23744
|
+
leftSectionPointerEvents,
|
|
23745
|
+
leftSectionProps,
|
|
23746
|
+
inputContainer,
|
|
23747
|
+
inputWrapperOrder,
|
|
23748
|
+
withAsterisk,
|
|
23749
|
+
required,
|
|
23750
|
+
labelProps,
|
|
23751
|
+
descriptionProps,
|
|
23752
|
+
errorProps,
|
|
23753
|
+
wrapperProps,
|
|
23754
|
+
description,
|
|
23755
|
+
label,
|
|
23756
|
+
error,
|
|
23757
|
+
withErrorStyles,
|
|
23758
|
+
__stylesApiProps: { ...props, multiline: true },
|
|
23759
|
+
id: _id,
|
|
23760
|
+
mod,
|
|
23761
|
+
attributes,
|
|
23762
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Pill.Group, { disabled, unstyled, ...getStyles2("pillsList"), children: [
|
|
23763
|
+
values2,
|
|
23764
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Combobox.EventsTarget, { autoComplete, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
23765
|
+
PillsInput.Field,
|
|
23766
|
+
{
|
|
23767
|
+
...rest,
|
|
23768
|
+
ref: _ref,
|
|
23769
|
+
...getStyles2("inputField"),
|
|
23770
|
+
unstyled,
|
|
23771
|
+
onKeyDown: handleInputKeydown,
|
|
23772
|
+
onFocus: (event) => {
|
|
23773
|
+
onFocus == null ? void 0 : onFocus(event);
|
|
23774
|
+
combobox.openDropdown();
|
|
23775
|
+
},
|
|
23776
|
+
onBlur: (event) => {
|
|
23777
|
+
onBlur == null ? void 0 : onBlur(event);
|
|
23778
|
+
acceptValueOnBlur && handleValueSelect(_searchValue);
|
|
23779
|
+
combobox.closeDropdown();
|
|
23780
|
+
},
|
|
23781
|
+
onPaste: handlePaste,
|
|
23782
|
+
value: _searchValue,
|
|
23783
|
+
onChange: (event) => handleSearchChange(event.currentTarget.value),
|
|
23784
|
+
required: required && _value.length === 0,
|
|
23785
|
+
disabled,
|
|
23786
|
+
readOnly,
|
|
23787
|
+
id: _id
|
|
23788
|
+
}
|
|
23789
|
+
) })
|
|
23790
|
+
] })
|
|
23791
|
+
}
|
|
23792
|
+
) }),
|
|
23793
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
23794
|
+
OptionsDropdown,
|
|
23795
|
+
{
|
|
23796
|
+
data: filterPickedTags({ data: parsedData, value: _value }),
|
|
23797
|
+
hidden: readOnly || disabled,
|
|
23798
|
+
filter,
|
|
23799
|
+
search: _searchValue,
|
|
23800
|
+
limit,
|
|
23801
|
+
hiddenWhenEmpty: true,
|
|
23802
|
+
withScrollArea,
|
|
23803
|
+
maxDropdownHeight,
|
|
23804
|
+
unstyled,
|
|
23805
|
+
labelId: label ? `${_id}-label` : void 0,
|
|
23806
|
+
"aria-label": label ? void 0 : others["aria-label"],
|
|
23807
|
+
renderOption,
|
|
23808
|
+
scrollAreaProps
|
|
23809
|
+
}
|
|
23810
|
+
)
|
|
23811
|
+
]
|
|
23812
|
+
}
|
|
23813
|
+
),
|
|
23814
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
23815
|
+
Combobox.HiddenInput,
|
|
23816
|
+
{
|
|
23817
|
+
name: name2,
|
|
23818
|
+
form,
|
|
23819
|
+
value: _value,
|
|
23820
|
+
valuesDivider: hiddenInputValuesDivider,
|
|
23821
|
+
disabled,
|
|
23822
|
+
...hiddenInputProps
|
|
23823
|
+
}
|
|
23824
|
+
)
|
|
23825
|
+
] });
|
|
23826
|
+
});
|
|
23827
|
+
TagsInput.classes = { ...InputBase.classes, ...Combobox.classes };
|
|
23828
|
+
TagsInput.displayName = "@mantine/core/TagsInput";
|
|
23187
23829
|
const TextInput = factory((props, ref) => {
|
|
23188
23830
|
const _props = useProps("TextInput", null, props);
|
|
23189
23831
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(InputBase, { component: "input", ref, ..._props, __staticSelector: "TextInput" });
|
|
@@ -187992,7 +188634,7 @@ function dynamic(importFn, _options) {
|
|
|
187992
188634
|
);
|
|
187993
188635
|
return Wrapper;
|
|
187994
188636
|
}
|
|
187995
|
-
const MonacoEditor = dynamic(() => __vitePreload(() => import("./index-
|
|
188637
|
+
const MonacoEditor = dynamic(() => __vitePreload(() => import("./index-BMtHZTuv.js"), true ? [] : void 0), {});
|
|
187996
188638
|
const CodeEditor = ({
|
|
187997
188639
|
initialCode = "",
|
|
187998
188640
|
onConfirm,
|
|
@@ -188050,7 +188692,7 @@ const CodeEditor = ({
|
|
|
188050
188692
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
188051
188693
|
"div",
|
|
188052
188694
|
{
|
|
188053
|
-
className: `font-mono text-sm text-secondary p-2 rounded border-transparent border whitespace-pre-wrap break-words min-h-[40px] ${readOnly ? "cursor-default opacity-90" : "cursor-text hover:bg-surface-hover hover:border-secondary transition-colors"}`,
|
|
188695
|
+
className: `font-mono text-sm text-secondary p-2 rounded border-transparent border whitespace-pre-wrap break-words [overflow-wrap:anywhere] overflow-hidden min-h-[40px] ${readOnly ? "cursor-default opacity-90" : "cursor-text hover:bg-surface-hover hover:border-secondary transition-colors"}`,
|
|
188054
188696
|
onClick: handleTextAreaClick,
|
|
188055
188697
|
title: readOnly ? void 0 : t2("codeEditor.clickToOpen"),
|
|
188056
188698
|
role: readOnly ? void 0 : "button",
|
|
@@ -199541,6 +200183,10 @@ const TestLiveView = ({
|
|
|
199541
200183
|
}
|
|
199542
200184
|
);
|
|
199543
200185
|
};
|
|
200186
|
+
const EDITABLE_FIELDS = [
|
|
200187
|
+
{ key: "autoDismissModal", label: "autoDismissModal", description: "Auto-dismiss cookie banners and popups before self-healing", type: "boolean", source: "use", defaultValue: false },
|
|
200188
|
+
{ key: "tags", label: "tags", description: "Filter and organize tests (e.g. smoke, regression)", type: "tags", source: "top", defaultValue: [] }
|
|
200189
|
+
];
|
|
199544
200190
|
const renderNestedFields = (obj, parentKey = "", isNested = false) => {
|
|
199545
200191
|
if (!obj || typeof obj !== "object") return [];
|
|
199546
200192
|
return Object.entries(obj).map(([key2, value2], index2) => {
|
|
@@ -199609,9 +200255,133 @@ const getConsoleLineStyle = (line) => {
|
|
|
199609
200255
|
className: ""
|
|
199610
200256
|
};
|
|
199611
200257
|
};
|
|
199612
|
-
const
|
|
200258
|
+
const renderConfigRow = (key2, value2, valueClassName = "font-mono text-xs text-blue-600") => /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "test-context-row", children: [
|
|
200259
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "font-semibold", children: key2 }),
|
|
200260
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: valueClassName, children: value2 })
|
|
200261
|
+
] }, key2);
|
|
200262
|
+
const renderConfigFields = (config2) => {
|
|
200263
|
+
const rows = [];
|
|
200264
|
+
if (config2.name) {
|
|
200265
|
+
rows.push(renderConfigRow("name", `"${config2.name}"`));
|
|
200266
|
+
}
|
|
200267
|
+
if (config2.baseURL) {
|
|
200268
|
+
rows.push(renderConfigRow("base_url", `"${config2.baseURL}"`));
|
|
200269
|
+
}
|
|
200270
|
+
if (config2.use) {
|
|
200271
|
+
const editableKeys = new Set(EDITABLE_FIELDS.filter((f2) => f2.source === "use").map((f2) => f2.key));
|
|
200272
|
+
const knownKeys = /* @__PURE__ */ new Set(["baseURL", "account", "auth", "args", ...editableKeys]);
|
|
200273
|
+
const { account, auth, args } = config2.use;
|
|
200274
|
+
if (account !== void 0) {
|
|
200275
|
+
const accountVal = typeof account === "object" && account !== null ? JSON.stringify(account, null, 2) : String(account);
|
|
200276
|
+
rows.push(renderConfigRow("account", accountVal, "font-mono text-xs text-orange-600 font-bold"));
|
|
200277
|
+
}
|
|
200278
|
+
if (auth !== void 0) {
|
|
200279
|
+
rows.push(renderConfigRow("auth", String(auth), "font-mono text-xs text-orange-600 font-bold"));
|
|
200280
|
+
if (args !== void 0) {
|
|
200281
|
+
rows.push(renderConfigRow("args", JSON.stringify(args), "font-mono text-xs"));
|
|
200282
|
+
}
|
|
200283
|
+
}
|
|
200284
|
+
for (const [k, v2] of Object.entries(config2.use)) {
|
|
200285
|
+
if (v2 === void 0 || knownKeys.has(k)) continue;
|
|
200286
|
+
const display = typeof v2 === "object" ? JSON.stringify(v2) : String(v2);
|
|
200287
|
+
rows.push(renderConfigRow(`use.${k}`, display));
|
|
200288
|
+
}
|
|
200289
|
+
}
|
|
200290
|
+
if (config2.parameters && config2.parameters.length > 0) {
|
|
200291
|
+
rows.push(renderConfigRow(
|
|
200292
|
+
"parameters",
|
|
200293
|
+
`${config2.parameters.length} set${config2.parameters.length > 1 ? "s" : ""}`,
|
|
200294
|
+
"font-mono text-xs text-purple-600"
|
|
200295
|
+
));
|
|
200296
|
+
for (const [i2, paramSet] of config2.parameters.entries()) {
|
|
200297
|
+
if (!paramSet || typeof paramSet !== "object") continue;
|
|
200298
|
+
const ps = paramSet;
|
|
200299
|
+
const label = ps.name || `Set ${i2 + 1}`;
|
|
200300
|
+
const values2 = ps.values;
|
|
200301
|
+
if (values2 && Object.keys(values2).length > 0) {
|
|
200302
|
+
rows.push(
|
|
200303
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "test-context-row", children: [
|
|
200304
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "font-semibold pl-4", children: label }),
|
|
200305
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-0.5 font-mono text-xs", children: Object.entries(values2).map(([k, v2]) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
200306
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-purple-600", children: k }),
|
|
200307
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-tertiary", children: ": " }),
|
|
200308
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-blue-600", children: `"${v2}"` })
|
|
200309
|
+
] }, k)) }) })
|
|
200310
|
+
] }, `param-${i2}`)
|
|
200311
|
+
);
|
|
200312
|
+
} else {
|
|
200313
|
+
rows.push(renderConfigRow(` ${label}`, "(empty)", "font-mono text-xs text-gray-500"));
|
|
200314
|
+
}
|
|
200315
|
+
}
|
|
200316
|
+
}
|
|
200317
|
+
if (config2.timeout) {
|
|
200318
|
+
rows.push(renderConfigRow("timeout", `${config2.timeout}ms`, "font-mono text-xs text-blue-600 font-bold"));
|
|
200319
|
+
}
|
|
200320
|
+
if (config2.skip !== void 0) {
|
|
200321
|
+
const skipVal = typeof config2.skip === "string" ? `"${config2.skip}"` : String(config2.skip);
|
|
200322
|
+
rows.push(renderConfigRow("skip", skipVal, "font-mono text-xs text-yellow-600"));
|
|
200323
|
+
}
|
|
200324
|
+
return rows;
|
|
200325
|
+
};
|
|
200326
|
+
const EditableConfigFields = ({ config: config2, onConfigChange }) => {
|
|
200327
|
+
const getFieldValue = (field) => {
|
|
200328
|
+
var _a;
|
|
200329
|
+
if (field.source === "use") {
|
|
200330
|
+
return ((_a = config2.use) == null ? void 0 : _a[field.key]) ?? field.defaultValue;
|
|
200331
|
+
}
|
|
200332
|
+
return config2[field.key] ?? field.defaultValue;
|
|
200333
|
+
};
|
|
200334
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: EDITABLE_FIELDS.map((field) => {
|
|
200335
|
+
const value2 = getFieldValue(field);
|
|
200336
|
+
const labelCell = /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "font-semibold align-top pt-1", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
200337
|
+
field.label,
|
|
200338
|
+
field.description && /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { label: field.description, multiline: true, w: 220, withArrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconInfoCircle, { size: 14, className: "text-tertiary cursor-help flex-shrink-0" }) })
|
|
200339
|
+
] }) });
|
|
200340
|
+
if (field.type === "boolean") {
|
|
200341
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "test-context-row", children: [
|
|
200342
|
+
labelCell,
|
|
200343
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "align-top pt-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
200344
|
+
Switch,
|
|
200345
|
+
{
|
|
200346
|
+
size: "xs",
|
|
200347
|
+
color: value2 ? "green" : "gray",
|
|
200348
|
+
checked: !!value2,
|
|
200349
|
+
onChange: (e) => onConfigChange == null ? void 0 : onConfigChange(field.key, e.currentTarget.checked, field.source)
|
|
200350
|
+
}
|
|
200351
|
+
) })
|
|
200352
|
+
] }, field.key);
|
|
200353
|
+
}
|
|
200354
|
+
if (field.type === "tags") {
|
|
200355
|
+
const tags = Array.isArray(value2) ? value2 : [];
|
|
200356
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "test-context-row", children: [
|
|
200357
|
+
labelCell,
|
|
200358
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
200359
|
+
TagsInput,
|
|
200360
|
+
{
|
|
200361
|
+
size: "xs",
|
|
200362
|
+
value: tags,
|
|
200363
|
+
onChange: (newTags) => onConfigChange == null ? void 0 : onConfigChange(field.key, newTags, field.source),
|
|
200364
|
+
placeholder: "Add tag...",
|
|
200365
|
+
styles: { input: { minHeight: 28 } }
|
|
200366
|
+
}
|
|
200367
|
+
) })
|
|
200368
|
+
] }, field.key);
|
|
200369
|
+
}
|
|
200370
|
+
return null;
|
|
200371
|
+
}) });
|
|
200372
|
+
};
|
|
200373
|
+
const TestInfoView = ({ className = "", testContextInfo = null, testConfigInfo = null, onConfigChange }) => {
|
|
199613
200374
|
const t2 = n("TestCases.infoView");
|
|
199614
|
-
const [activeTab, setActiveTab] = reactExports.useState(
|
|
200375
|
+
const [activeTab, setActiveTab] = reactExports.useState(
|
|
200376
|
+
() => testConfigInfo ? "config" : "context"
|
|
200377
|
+
);
|
|
200378
|
+
reactExports.useEffect(() => {
|
|
200379
|
+
if (!testConfigInfo && activeTab === "config") {
|
|
200380
|
+
setActiveTab("context");
|
|
200381
|
+
} else if (testConfigInfo && activeTab !== "config" && !(testContextInfo == null ? void 0 : testContextInfo.testContext)) {
|
|
200382
|
+
setActiveTab("config");
|
|
200383
|
+
}
|
|
200384
|
+
}, [testConfigInfo, testContextInfo == null ? void 0 : testContextInfo.testContext, activeTab]);
|
|
199615
200385
|
const [panelHeight, setPanelHeight] = reactExports.useState(200);
|
|
199616
200386
|
const [isDragging, setIsDragging] = reactExports.useState(false);
|
|
199617
200387
|
const [previousHeight, setPreviousHeight] = reactExports.useState(200);
|
|
@@ -199778,6 +200548,7 @@ const TestInfoView = ({ className = "", testContextInfo = null }) => {
|
|
|
199778
200548
|
),
|
|
199779
200549
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 flex flex-col bg-surface border-t border-subtle overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Tabs, { value: activeTab, onChange: setActiveTab, style: { height: "100%" }, children: [
|
|
199780
200550
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tabs.List, { children: [
|
|
200551
|
+
testConfigInfo && /* @__PURE__ */ jsxRuntimeExports.jsx(Tabs.Tab, { value: "config", leftSection: /* @__PURE__ */ jsxRuntimeExports.jsx(IconSettings, { size: 16 }), children: t2("configTab") }),
|
|
199781
200552
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Tabs.Tab, { value: "context", leftSection: /* @__PURE__ */ jsxRuntimeExports.jsx(IconInfoCircle, { size: 16 }), children: t2("variablesTab") }),
|
|
199782
200553
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tabs.Tab, { value: "console", leftSection: /* @__PURE__ */ jsxRuntimeExports.jsx(IconTerminal, { size: 16 }), children: [
|
|
199783
200554
|
t2("consoleTab"),
|
|
@@ -199785,6 +200556,13 @@ const TestInfoView = ({ className = "", testContextInfo = null }) => {
|
|
|
199785
200556
|
consoleLines.length > 0 && `(${consoleLines.length})`
|
|
199786
200557
|
] })
|
|
199787
200558
|
] }),
|
|
200559
|
+
testConfigInfo && /* @__PURE__ */ jsxRuntimeExports.jsx(Tabs.Panel, { value: "config", style: { height: "calc(100% - 40px)", overflow: "hidden" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-full overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "overflow-y-auto h-full", children: [
|
|
200560
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Table, { className: "test-context-table", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table.Tbody, { children: [
|
|
200561
|
+
renderConfigFields(testConfigInfo),
|
|
200562
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(EditableConfigFields, { config: testConfigInfo, onConfigChange })
|
|
200563
|
+
] }) }),
|
|
200564
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-4" })
|
|
200565
|
+
] }) }) }),
|
|
199788
200566
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Tabs.Panel, { value: "context", style: { height: "calc(100% - 40px)", overflow: "hidden" }, children: !testContextInfo || !testContextInfo.testContext ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Text, { size: "sm", c: "dimmed", children: t2("noVariables") }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-full overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "test-context-wrapper overflow-y-auto h-full", children: [
|
|
199789
200567
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Table, { className: "test-context-table", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Table.Tbody, { children: renderNestedFields(testContextInfo.testContext) }) }),
|
|
199790
200568
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-4" }),
|
|
@@ -199833,7 +200611,9 @@ const PreviewPanel = We.memo(
|
|
|
199833
200611
|
session,
|
|
199834
200612
|
isFullScreen = false,
|
|
199835
200613
|
onToggleFullScreen,
|
|
199836
|
-
testContextInfo
|
|
200614
|
+
testContextInfo,
|
|
200615
|
+
testConfigInfo,
|
|
200616
|
+
onConfigChange
|
|
199837
200617
|
}) => {
|
|
199838
200618
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "h-full overflow-y-auto flex flex-col", children: [
|
|
199839
200619
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -199853,7 +200633,7 @@ const PreviewPanel = We.memo(
|
|
|
199853
200633
|
isFullScreen
|
|
199854
200634
|
}
|
|
199855
200635
|
) }),
|
|
199856
|
-
!isFullScreen && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pb-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(TestInfoView, { testContextInfo }) })
|
|
200636
|
+
!isFullScreen && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pb-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(TestInfoView, { testContextInfo, testConfigInfo, onConfigChange }) })
|
|
199857
200637
|
] });
|
|
199858
200638
|
}
|
|
199859
200639
|
);
|
|
@@ -200205,10 +200985,15 @@ function useLocalTestFlow(file) {
|
|
|
200205
200985
|
reactExports.useEffect(() => {
|
|
200206
200986
|
fetchTestFlow();
|
|
200207
200987
|
}, [fetchTestFlow]);
|
|
200208
|
-
const
|
|
200209
|
-
async (newTestFlow) => {
|
|
200210
|
-
if (!
|
|
200211
|
-
|
|
200988
|
+
const saveWithData = reactExports.useCallback(
|
|
200989
|
+
async (snapshot, newTestFlow) => {
|
|
200990
|
+
if (!file) return;
|
|
200991
|
+
let cleanUse = snapshot.use ? { ...snapshot.use } : void 0;
|
|
200992
|
+
if (cleanUse) {
|
|
200993
|
+
if (cleanUse.autoDismissModal === false) delete cleanUse.autoDismissModal;
|
|
200994
|
+
if (Object.keys(cleanUse).length === 0) cleanUse = void 0;
|
|
200995
|
+
}
|
|
200996
|
+
const metadata = snapshot.isSuite ? { name: snapshot.name, tags: snapshot.tags, use: cleanUse, ...snapshot.metadata } : { ...snapshot.metadata, tags: snapshot.tags, use: cleanUse };
|
|
200212
200997
|
const url = apiUrl(`/api/test-flow?file=${encodeURIComponent(file)}`);
|
|
200213
200998
|
const res = await fetch(url, {
|
|
200214
200999
|
method: "PUT",
|
|
@@ -200216,15 +201001,22 @@ function useLocalTestFlow(file) {
|
|
|
200216
201001
|
body: JSON.stringify({ testFlow: newTestFlow, metadata })
|
|
200217
201002
|
});
|
|
200218
201003
|
if (!res.ok) throw new Error(`Failed to save: ${res.statusText}`);
|
|
201004
|
+
},
|
|
201005
|
+
[file]
|
|
201006
|
+
);
|
|
201007
|
+
const saveTestFlow = reactExports.useCallback(
|
|
201008
|
+
async (newTestFlow) => {
|
|
201009
|
+
if (!data) return;
|
|
201010
|
+
await saveWithData(data, newTestFlow);
|
|
200219
201011
|
if (data.isSuite) {
|
|
200220
201012
|
await fetchTestFlow();
|
|
200221
201013
|
} else {
|
|
200222
201014
|
setData((prev) => prev ? { ...prev, testFlow: newTestFlow } : prev);
|
|
200223
201015
|
}
|
|
200224
201016
|
},
|
|
200225
|
-
[data,
|
|
201017
|
+
[data, saveWithData, fetchTestFlow]
|
|
200226
201018
|
);
|
|
200227
|
-
return { data, loading, error, saveTestFlow, refetch: fetchTestFlow };
|
|
201019
|
+
return { data, setData, loading, error, saveTestFlow, saveWithData, refetch: fetchTestFlow };
|
|
200228
201020
|
}
|
|
200229
201021
|
function useLocalTestResults(file) {
|
|
200230
201022
|
const [data, setData] = reactExports.useState(null);
|
|
@@ -200359,7 +201151,7 @@ function LocalDebuggerPage() {
|
|
|
200359
201151
|
},
|
|
200360
201152
|
[config2]
|
|
200361
201153
|
);
|
|
200362
|
-
const { data, loading, error, saveTestFlow } = useLocalTestFlow(selectedFile);
|
|
201154
|
+
const { data, setData, loading, error, saveTestFlow, saveWithData } = useLocalTestFlow(selectedFile);
|
|
200363
201155
|
const testResults = useLocalTestResults(selectedFile);
|
|
200364
201156
|
reactExports.useEffect(() => {
|
|
200365
201157
|
if (!testResults) return;
|
|
@@ -200478,6 +201270,40 @@ function LocalDebuggerPage() {
|
|
|
200478
201270
|
);
|
|
200479
201271
|
return { testCase: tc, dividerMap: dividers, cloneUidMap: cloneMap };
|
|
200480
201272
|
}, [data]);
|
|
201273
|
+
const testConfigInfo = reactExports.useMemo(() => {
|
|
201274
|
+
var _a, _b, _c, _d, _e, _f;
|
|
201275
|
+
if (!data) return null;
|
|
201276
|
+
return {
|
|
201277
|
+
name: data.name,
|
|
201278
|
+
goal: ((_a = data.metadata) == null ? void 0 : _a.goal) || ((_b = data.testFlow) == null ? void 0 : _b.goal),
|
|
201279
|
+
baseURL: ((_c = data.testFlow) == null ? void 0 : _c.baseURL) || ((_d = data.use) == null ? void 0 : _d.baseURL),
|
|
201280
|
+
tags: data.tags,
|
|
201281
|
+
use: data.use,
|
|
201282
|
+
parameters: data.parameters,
|
|
201283
|
+
timeout: (_e = data.metadata) == null ? void 0 : _e.timeout,
|
|
201284
|
+
skip: (_f = data.metadata) == null ? void 0 : _f.skip,
|
|
201285
|
+
fileName: data.fileName
|
|
201286
|
+
};
|
|
201287
|
+
}, [data]);
|
|
201288
|
+
const handleConfigChange = reactExports.useCallback((key2, value2, source) => {
|
|
201289
|
+
configDirtyRef.current = true;
|
|
201290
|
+
setData((prev) => {
|
|
201291
|
+
if (!prev) return prev;
|
|
201292
|
+
if (source === "use") {
|
|
201293
|
+
return { ...prev, use: { ...prev.use, [key2]: value2 } };
|
|
201294
|
+
}
|
|
201295
|
+
if (source === "top") {
|
|
201296
|
+
return { ...prev, [key2]: value2 };
|
|
201297
|
+
}
|
|
201298
|
+
return prev;
|
|
201299
|
+
});
|
|
201300
|
+
}, [setData]);
|
|
201301
|
+
const configDirtyRef = reactExports.useRef(false);
|
|
201302
|
+
reactExports.useEffect(() => {
|
|
201303
|
+
if (!data || !configDirtyRef.current) return;
|
|
201304
|
+
configDirtyRef.current = false;
|
|
201305
|
+
saveWithData(data, data.testFlow).catch((e) => console.error("[debugger] Config save error:", e));
|
|
201306
|
+
}, [data, saveWithData]);
|
|
200481
201307
|
const renderBetweenStatements = reactExports.useCallback(
|
|
200482
201308
|
(_beforeUid, afterUid) => {
|
|
200483
201309
|
if (!afterUid || !dividerMap) return null;
|
|
@@ -200647,7 +201473,9 @@ function LocalDebuggerPage() {
|
|
|
200647
201473
|
activeTab,
|
|
200648
201474
|
onTabChange: handleSetActiveTab,
|
|
200649
201475
|
session: session ?? void 0,
|
|
200650
|
-
testContextInfo
|
|
201476
|
+
testContextInfo,
|
|
201477
|
+
testConfigInfo,
|
|
201478
|
+
onConfigChange: handleConfigChange
|
|
200651
201479
|
}
|
|
200652
201480
|
) })
|
|
200653
201481
|
] })
|
|
@@ -200668,7 +201496,7 @@ const Login = { "title": "Login", "continueWithGoogle": "Continue with Google",
|
|
|
200668
201496
|
const OAuth = { "slackCallback": { "loading": "Loading...", "processingLogin": "Processing login...", "errorWithMessage": "Error: {error}", "parentClosedWarning": "Parent window was closed before callback." } };
|
|
200669
201497
|
const Invite = { "accept": { "loadingInvitation": "Loading invitation...", "invalidInvitationTitle": "Invalid Invitation", "goToLogin": "Go to Login", "acceptedTitle": "Invitation Accepted!", "memberOfOrganization": "You are now a member of {organization}", "loginToAccess": "Please log in to access your organization", "youAreInvitedTitle": "You've been invited!", "youAreInvitedSubtitle": "You've been invited to join an organization", "cancel": "Cancel", "acceptInvitation": "Accept Invitation", "labels": { "organization": "Organization", "invitedEmail": "Invited Email", "role": "Role", "invitedBy": "Invited by", "expires": "Expires" }, "roles": { "admin": "Admin", "member": "Member" }, "errors": { "failedToLoadInvitation": "Failed to load invitation", "invalidInvitation": "Invalid invitation", "failedToLoadInvitationDetails": "Failed to load invitation details", "failedToAcceptInvitation": "Failed to accept invitation" } } };
|
|
200670
201498
|
const GeneralSettings = { "sectionProfile": "Profile", "profilePicture": "Profile picture", "profilePictureFormats": "Supported formats: PNG/JPEG/JPG. Maximum file size: 5MB", "email": "Email", "fullName": "Full Name", "fullNamePlaceholder": "Enter your full name", "saveChanges": "Save Changes", "clear": "Clear", "avatarClearedTitle": "Avatar Cleared", "avatarClearedMessage": "Click Save Changes to update your profile", "sectionAppearance": "Appearance", "theme": "Theme", "language": "Language", "sectionDevelopment": "Development", "experimentalFeatures": "Experimental Features", "debugging": "Debugging", "profileUpdatedMessage": "Profile updated successfully", "profileUpdateFailedMessage": "Failed to update profile", "avatarUpdatedMessage": "Avatar updated successfully", "avatarUpdateFailedMessage": "Failed to update avatar" };
|
|
200671
|
-
const TestCases = /* @__PURE__ */ JSON.parse(`{"cannotUpdateSystemViews":"Cannot update system views","viewUpdatedSuccessfully":"View updated successfully","failedToUpdateView":"Failed to update view","generateAiTitle":"Generate AI Title","revertToOriginalTitle":"Revert to Original Title","runInCloud":"Run in Cloud","hideDetails":"Hide details","showDetails":"Show details","testMustBeActiveToRunInCloud":"Test must be Active to run in cloud","cannotRunTest":"Cannot Run Test","testCaseMustBeActiveToRun":"Test case must be Active to run","failedToLoadTestCaseDetails":"Failed to load test case details","failedToUpdateTestCaseStatus":"Failed to update test case status","testCaseDuplicatedSuccessfully":"Test case duplicated successfully","failedToDuplicateTestCase":"Failed to duplicate test case","testCaseStatusUpdated":"Test case status updated","runTest":"Run Test","testCaseMustBeActive":"Test Case must be Active to run","viewRecording":"View Recording","noRecordingAvailable":"No Recording Available","deleteTestCaseTitle":"Delete test case?","deleteTestCaseInUse":"This test case is used as a dependency for other tests. Please remove the dependency first.","deleteTestCaseConfirm":"Are you sure you want to delete","deleteTestCaseUndone":"This action cannot be undone.","setupBadgeLabel":"Setup","setupBadgeTooltip":"This test is used as a setup test for other tests","teardownBadgeLabel":"Teardown","teardownBadgeTooltip":"This test is used as a teardown test for other tests","loadingTestCaseDetails":"Loading test case details","deleteSelected":"Delete Selected","deleteTestCasesTitle":"Delete test cases?","deleteTestCasesInUse":"Some test cases are used as dependencies for other tests. Please remove these dependencies first.","theseTestCases":"These test cases","thisTestCase":"This test case","statusLabel":"Status","labelsLabel":"Labels","failedToUpdateTestCaseLabel":"Failed to update test case label","detailPage":{"failedToLoadTestCase":"Failed to load test case","testCaseNotFound":"Test case not found","returnToTestCases":"Return to Test Cases","retry":"Retry"},"runTestModal":{"titleSingle":"Run Test in Cloud","titleMultiple":"Run {count} Test Case(s) in Cloud","titleSuite":"Run Test Suite in Cloud","titleSchedule":"Run Schedule in Cloud","runButton":"Run Test","runMultipleButton":"Run {count} Test(s)","envDescription":"Only environments configured for this test case are shown","envMultiDescription":"Test cases will run using the selected environment. Test cases that don't support this environment will be skipped."},"failedToLoadTestAccounts":"Failed to load test accounts","fixAcceptedTitle":"Fix accepted","fixAcceptedMessage":"The AI fix has been applied to the test case.","fixRejectedTitle":"Fix rejected","fixRejectedMessage":"The AI fix has been rejected and will not be used in future runs.","testFlowReverted":"Test flow reverted to this version","environmentRequired":"Environment is required","environmentSetAsStepEditorEnv":"Environment set as step editor env successfully","deleteEnvironmentConfigTitle":"Delete Environment Config?","environmentConfigDeletedSuccessfully":"Environment config deleted successfully","knowledgeExtractedTitle":"Knowledge Extracted","extractionFailedTitle":"Extraction Failed","saveBLockedTitle":"Save Blocked","saveBlockedNestedTemplates":"Templates cannot contain nested templates. Remove nested template references before saving.","templateInsertedTitle":"Template Inserted","templateInsertedMessage":"Template content inserted as a normal group. Nested templates are not allowed, so the content has been copied instead of referenced.","sessionTimedOutTitle":"Session timed out","sessionTimedOutMessage":"Your session was reset due to inactivity. Start debug again to continue.","testFlowUnsavedChangesTitle":"Test flow has unsaved changes","testFlowUnsavedChangesMessage":"Current test flow has unsaved changes. Please save first, or leave this page and discard the changes.","continueEditing":"Continue Editing","discardAndLeave":"Discard And Leave","failedToLoadTestAccountsNotification":"Failed to load test accounts","loadingTestCaseDetailsState":"Loading test case details...","generatingTestCase":"Generating Test Case","stop":"Stop","generatingDescription":"This might take a few minutes. You can stop the process at any time.","agentCouldNotComplete":"Agent could not complete the task","dismissWarning":"Dismiss warning","nativeTestWarning":"Native app tests (Android/iOS) can only be edited and debugged in the desktop app.","convertingTestFormat":"Converting test format...","selectPlaceholder":"Select {title}","viewTestCaseTooltip":"View test case: {title}","summaryTitle":"Summary","generateAiSummary":"Generate AI Summary","resetToOriginalSummary":"Reset to original summary","saving":"Saving...","clickToAddSummary":"Click to add a test summary...","labelsTitle":"Labels","addLabel":"Add label","testSuitesTitle":"Test Suites","addToTestSuite":"Add to test suite","statusGenerating":"AI agent is generating your test case","statusQueued":"Test case is queued for generation","statusGeneratingLabel":"Generating","statusQueuedLabel":"Queued","changeStatus":"Change Status","searchTestCases":"Search test cases...","columnId":"ID","columnName":"Name","columnStatus":"Status","setupTeardownMenu":{"selectTitle":"Select {title}"},"parameterSets":{"description":"Named variable sets. Each enabled set produces an independent result row when the test is run in this schedule.","columnLabel":"Label","columnVariables":"Variables","columnEnabled":"Enabled","defaultLabel":"Default","testCaseVariablesLabel":"test case variables","addParameterSet":"Add Parameter Set","editParameterSet":"Edit Parameter Set","editDefaultVariables":"Edit Default Variables","deleteParameterSet":"Delete Parameter Set","labelField":"Label","labelPlaceholder":"e.g. Admin, Guest User","labelAlreadyExists":"A parameter set with this label already exists.","deleteConfirm":"Are you sure you want to delete this parameter set? This cannot be undone.","editDefaultDescription":"These are the test case's own variables. Changes here update the test case settings and apply to all schedules that don't override them with a custom parameter set.","add":"Add","update":"Update"},"variables":{"title":"Variables","description":"Variables scoped to this test case. They override environment and global variables with the same name.","columnName":"Name","columnValue":"Value","addVariable":"Add Variable","namePlaceholder":"name","valuePlaceholder":"value","nameRequired":"Required","nameAlreadyExists":"Already exists","sensitiveMasked":"Sensitive: value is masked in the UI and logs","markSensitive":"Mark as sensitive to mask the value in the UI and logs"},"debuggerWarnings":{"heading":"Statements have been modified during debugging","body":"Changes made during debugging session may not reflect actual execution behavior. Consider restarting the debugging session to ensure consistency."},"debuggerButtonBar":{"undoRevert":"Undo revert","revertChanges":"Revert changes","undo":"Undo","revert":"Revert","saveChanges":"Save all changes to statements","noChanges":"No changes to save","save":"Save","saved":"Saved","disabledDuringGeneration":"Disabled during test generation","startWithOverride":"Initialize debugging session with URL override: {url} (Ctrl + R)","startDebugging":"Initialize debugging session and execute first statement (Ctrl + R)","noMoreStatements":"No more statements to execute","executeNext":"Execute the next statement in sequence (Ctrl + R)","urlOverrideTooltip":"URL override: {url}","setUrlOverride":"Set URL override","urlOverrideSection":"URL Override","urlOverridePlaceholder":"https://example.com/path","waitingForStep":"Waiting for current step to complete...","pauseExecution":"Pause execution after current step","executeAll":"Execute all remaining statements","pause":"Pause","run":"Run","resetSession":"Reset session","reset":"Reset","start":"Start","step":"Step"},"statementBadge":{"unsavedChanges":"Unsaved changes"},"ifElseStatement":{"then":"Then","else":"Else","expandThen":"Expand then branch","collapseThen":"Collapse then branch","expandElse":"Expand else branch","collapseElse":"Collapse else branch","clearThenBranch":"Clear Then Branch","clearThenTooltip":"Remove all statements from the THEN branch. The ELSE branch (if present) will not be affected. This action cannot be undone.","addElseBranch":"Add else branch","removeElseBranch":"Remove else branch","aiCondition":"AI Condition: Natural language evaluation","jsCondition":"JS Condition: JavaScript expression","ifElseActions":"If/Else Actions","clickToAddCondition":"Click to add condition","disabled":"Disabled","conditionPlaceholder":"Enter condition expression...","clearThenItem1":"Remove all statements from the THEN branch.","clearThenItem2":"The ELSE branch (if present) will not be affected.","clearThenItem3":"This action cannot be undone."},"whileLoopStatement":{"loopBody":"Loop Body","expandLoop":"Expand loop body","collapseLoop":"Collapse loop body","secondsMax":"seconds max","clearLoopBody":"Clear Loop Body","clearLoopTooltip":"Remove all statements from the loop body. The loop condition will remain unchanged. This action cannot be undone.","aiCondition":"AI Condition: Natural language evaluation","jsCondition":"JS Condition: JavaScript expression","loopActions":"Loop Actions","clickToAddCondition":"Click to add condition","disabled":"Disabled","conditionPlaceholder":"Enter loop condition...","clearBodyItem1":"Remove all statements from the loop body.","clearBodyItem2":"The loop condition will remain unchanged.","clearBodyItem3":"This action cannot be undone."},"floatingAddButton":{"addNewStep":"Add a new step"},"floatingActionBar":{"run":"Run this step","runUntil":"Run until this step","moveUp":"Move up","moveDown":"Move down","duplicate":"Duplicate","edit":"Modify","delete":"Delete","rollback":"Rollback to this statement","skipTo":"Skip to this statement"},"saveTemplate":{"title":"Save as Template","nameLabel":"Name","namePlaceholder":"e.g., user-registration, checkout-flow","nameDescription":"Give this template a unique name for easy identification","nameRequired":"Name is required","nameExists":"Name \\"{name}\\" already exists","description":"Description","nameAlreadyExists":"Name Already Exists"},"selectTemplate":{"title":"Select Template","searchPlaceholder":"Search templates...","noMatch":"No templates match your search","noTemplates":"No templates available","columnName":"Name","columnDescription":"Description","copyTooltip":"Insert as independent copy. Changes to the template won't affect this group.","linkTooltip":"Link to template. This group will stay in sync with the template.","linkDisabledTooltip":"Templates can't link other templates. Use Copy instead.","copy":"Copy","link":"Link","copyButton":"Copy Button","linkButton":"Link Button","noTemplatesAvailable":"No Templates Available","noTemplatesMatchSearch":"No Templates Match Search"},"statementList":{"noStatements":"No statements","noStatementsReadOnly":"No statements (read-only)"},"suiteSectionDivider":{"skipped":" (skipped)","skippedSuffix":"Skipped Suffix"},"codeEditor":{"cancelTooltip":"Cancel (Esc)","confirmTooltip":"Confirm code (Ctrl+Enter)","hint":"Press Ctrl+Enter to confirm, Esc to cancel","unsavedChanges":"• Unsaved changes","clickToOpen":"Click to open code editor"},"actionEntityEditor":{"cancelTooltip":"Cancel (Esc)","confirmTooltip":"Confirm changes (Ctrl+Enter)","hint":"Press Ctrl+Enter to confirm, Esc to cancel","shortcutHint":"{modifier}+↵ save · esc cancel","unsavedChanges":"• Unsaved changes","missingActionName":"Missing action name","invalidYaml":"Invalid YAML","viewTitle":"View action entity","editTitle":"Click to edit action entity"},"extractContentEditor":{"configurePrompt":"Click to configure variable extraction...","extractAndSave":"Extract <elem>{element}</elem> and save to <var>{variable}</var>","clickToEdit":"Click to edit","clickToConfigure":"Click to configure","configurePlaceholder":"Configure Placeholder","extractDisplayText":"Extract Display Text"},"extractContentModal":{"title":"Extract Content Configuration","whatToExtract":"What to extract","extractPlaceholder":"e.g., order number, user name, price from the table...","extractDescription":"Describe the page element or content you want to extract","variableName":"Variable name","variablePlaceholder":"e.g., orderNumber, userName, tablePrice","variableDescription":"Name of the variable to store the extracted value","extractContent":"Extract Content"},"extractEmailContentEditor":{"noConfigured":"No email content extraction configured","configurePrompt":"Click to configure email content extraction...","variableTooltip":"The variable name will be used to store the extracted content.","variableLabel":"Variable: {name}","clickToConfigure":"Click To Configure","clickToEdit":"Click To Edit","configurePlaceholder":"Configure Placeholder","noConfig":"No Config"},"extractEmailContentModal":{"title":"Email Content Extraction Configuration","selectConfig":"Select configuration","selectConfigPlaceholder":"Select a saved configuration","forwardEmail":"Forward Email","extractionType":"Extraction Type","extractionTypePlaceholder":"Select extraction type","extractionTypeDescription":"The type of content to extract from emails","prompt":"Prompt","promptPlaceholder":"Enter custom prompt for extraction (optional)","promptDescription":"Optional: Custom prompt to guide the extraction process","filterFromEmail":"Filter From Email","filterFromPlaceholder":"Enter email address to filter by sender","filterFromDescription":"Required: Email address to filter emails by sender","filterToEmail":"Filter To Email","filterToPlaceholder":"Enter email address to filter by recipient (optional)","filterToDescription":"Optional: Email address to filter emails by recipient","filterSubject":"Filter Subject","filterSubjectPlaceholder":"Enter subject text to filter by (optional)","filterSubjectDescription":"Optional: Text that must be contained in the email subject","filterBodyContains":"Filter Body Contains","filterBodyPlaceholder":"Enter text that must be in email body (optional)","filterBodyDescription":"Optional: Text that must be contained in the email body","extractionTypeRequired":"Extraction type is required","filterFromEmailRequired":"Filter from email is required"},"fileUploadEditor":{"uploadFile":"Upload file","uploadFiles":"Upload {count} files","noFilesSelected":"No files selected","selectFiles":"Select files to upload","clickToChange":"Click to change files"},"fileUploadModal":{"title":"Select Test Data Files","targetLabel":"(Optional) Upload Target Description","targetSublabel":"(when there are multiple on the page)","targetPlaceholder":"Target description (optional, e.g., 'profile picture upload')","searchPlaceholder":"Search files by name...","loadError":"Failed to load test data files","noFilesMatch":"No files match your search","noFilesAvailable":"No test data files available. Upload files in the Test Data section to use them here.","clearTarget":"Clear target description","selectFile":"Select File","selectFiles":"Select {count} Files","pickFromLocal":"Pick local files"},"functionEditor":{"noParameters":"No parameters","configuredViaModal":"Functions are configured via modal dialog"},"loginEditor":{"configurePrompt":"Click to configure login credentials...","clickToEdit":"Click to edit login configuration","clickToConfigure":"Click to configure login","configurePlaceholder":"Configure Placeholder"},"loginModal":{"title":"Login Configuration","environment":"Environment","environmentPlaceholder":"Select environment (optional)","environmentDescription":"Optional: Environment to login to. If not specified, the session's default environment will be used.","testAccount":"Test Account","selectTestAccount":"Select test account","noAccountsForEnv":"No test accounts available for this environment","noGlobalAccounts":"No global test accounts available","testAccountRequired":"Test Account ID is required","selectAccountDescription":"Select the test account to use for login","createdPrefix":"Created:","idPrefix":"ID:","saveConfiguration":"Save Configuration"},"waitUntilEditor":{"conditionPlaceholder":"Condition: e.g., The loading spinner disappears","clickToAdd":"Click to add wait condition","secondsMaxWait":"seconds max wait","maxTimeoutReached":"Maximum 300s"},"jsonViewer":{"base64ImageLabel":"[Base64 Image - Click to view]","imagePreview":"Image Preview","base64ImageAlt":"Base64 image preview","imageAlt":"Image preview","imagePreviewAlt":"Image Preview Alt","previewTitle":"Preview Title"},"codeTab":{"description":"This code is dynamically generated from the test flow. Edit steps in the Steps tab to modify the test.","error":"Error: {error}","readOnlyPreview":"Read-only preview"},"settingsTab":{"loadingDetails":"Loading test case details...","failedToLoadAccounts":"Failed to load test accounts"},"actionStatement":{"showHideDetails":"Show/Hide details","showDebugInfo":"Show debug info","removeLocator":"Remove locator","debugInfoTitle":"Action Generation Debug Info","picking":"Picking...","pickLocator":"Pick Locator","aiAssertion":"AI Assertion: Natural language verification","jsAssertion":"JS Assertion: Playwright expect expression","aiGroup":"AI Group: Natural language description","groupContainer":"Group Container: Contains nested statements","aiAction":"AI Action: Auto-adapts to page changes","regularAction":"Uses cached element selectors","pureVision":"Pure Vision: Uses only visual analysis","hybridMode":"Hybrid Mode: Uses DOM + visual analysis","settings":"Settings","aiModeLabel":"AI Mode","pureVisionLabel":"Use Vision Only","pureVisionOn":"Pure Vision: Uses only visual analysis","pureVisionOff":"Hybrid Mode: Uses DOM + visual analysis","clearCache":"Clear Cache","cachedAction":"Cached: {actionName}","noCache":"No cached result. Run the step to create one.","disableCacheLabel":"Disable Cache","disableCacheInfo":"When enabled, the step will use AI to dynamically locate elements instead of cached selectors. Runs with cached selectors first, then falls back to AI if cache fails. This is useful when page layout changes frequently.","pureVisionInfo":"When enabled, the step uses only visual (screenshot) analysis without DOM inspection. Useful for canvas-based or non-standard UI elements.","switchType":"Action Type","usingJsCode":"JS Execution","usingJsCodeInfo":"When enabled, the assertion uses a JavaScript Playwright expect expression. Runs with JS first, then falls back to AI if JS fails. When disabled, it uses AI to verify conditions with natural language."},"actionEditor":{"selectActionType":"Select an action type from the dropdown above...","enterAssertion":"Enter assertion description...","functionModal":"Function will be configured via modal...","loginModal":"Login credentials will be configured via modal...","emailModal":"Email extraction will be configured via modal...","waitCondition":"Wait condition will be configured below...","enterAction":"Enter action description...","clickToAdd":"Click to add description"},"newStepEditor":{"loadingDetails":"Loading test case details...","agentCouldNotComplete":"Agent Could Not Complete","convertingFormat":"Converting Format","dismissWarning":"Dismiss Warning"},"actionWithSwitch":{"aiAction":"AI Action","action":"Action","switchToRegular":"Switch to regular action","switchToAi":"Switch to AI action"},"debugStatusIcon":{"skipped":"Skipped","streaming":"Streaming...","executing":"Executing...","executionSuccessful":"Execution successful","executionFailed":"Execution failed","nextStatement":"Next statement to be executed","convertedToAi":"Statement was converted to AI mode for successful execution"},"conditionInput":{"placeholder":"Enter condition expression...","disabled":"Disabled","clickToAddCondition":"Click to add condition"},"environmentConfigForm":{"testAccount":"Test Account","setAsDefault":"Set as default environment for Test Editor","setAsDefaultDescription":"This environment will be used as the default when editing the test steps.","hooksDescription":"Templates that run before/after test execution"},"latestRun":{"notAvailable":"N/A","invalidDate":"Invalid date","seconds":"{totalSeconds} seconds","pending":"Pending","latestResult":"Latest Result","viewRunDetails":"View run details (#{id})","result":"Result","startTime":"Start Time","endTime":"End Time","duration":"Duration","environment":"Environment","default":"Default"},"resizableEditor":{"editor":"Editor","preview":"Preview","clickToExpand":"Click to expand","clickToCollapse":"Click to collapse","dragToResize":"Drag to resize"},"statementWrapper":{"skipped":"Skipped","failed":"Failed","passed":"Passed","addedByAiFix":" · Added by AI fix","modifiedByAiFix":" · Modified by AI fix","movedByAiFix":" · Moved by AI fix","autoHealed":" · Auto healed","showingHealed":"Showing healed action step. Click to switch back to original.","showingOriginal":"Showing original action step. Click to switch to healed.","added":"Added","original":"Original","modified":"Modified","moved":"Moved","draggingDisabled":"Dragging disabled during debugging","dragToReorder":"Drag to reorder","rollbackToStatement":"Rollback to this statement","skipToStatement":"Skip to this statement","executeStatement":"Execute this statement","executeUntilStatement":"Execute until this statement.","executeThisStepDescription":"Executes this step.","executeThisStepItem1":"This will execute the step itself.","executeThisStepItem2":"Use this to quickly test a specific part of the test flow.","runUntilThisStep":"Run Until This Step","runUntilThisStepDescription":"Runs the test flow until this step is executed.","runUntilThisStepItem1":"This will not execute the step itself.","runUntilThisStepItem2":"Use this to quickly test a specific part of the test flow.","currentStatement":"This is the current statement.","editStatement":"Edit Statement","duplicate":"Duplicate","delete":"Delete","actionsLabel":"Actions","draft":"Draft","action":"Action","assertion":"Assertion","code":"Code","function":"Function","uploadFile":"Upload file","extract":"Extract","waitUntil":"Wait Until","group":"Group","template":"Template","extractEmailContent":"Extract Email Content","controlFlows":"Control Flows","ifElse":"If/Else","loop":"Loop","draftTooltip":"A Draft is a flexible statement that converts to Action or Group after execution. Use this when you're not sure if your instruction will need one or multiple steps. After execution, it automatically becomes an Action (single step) or Group (multiple steps) based on what the AI produces. (Ctrl+Alt+B)","draftInstruction1":"A Draft is a flexible statement that converts after execution.","draftInstruction2":"If the AI produces one action, it becomes an Action.","draftInstruction3":"If the AI produces multiple actions, it becomes a Group.","draftInstruction4":"Use this when you're not sure how many steps your instruction will need.","actionTooltip":"An Action performs interactions with the page using natural language descriptions. Examples: \\"Click the submit button\\", \\"Fill in the email field with user@example.com\\", \\"Select California from the state dropdown\\". The AI agent interprets your description and executes the appropriate browser action. (Ctrl+Alt+A)","actionInstruction1":"An Action performs interactions with the page using natural language descriptions.","actionInstruction2":"The AI agent interprets your description and executes the appropriate browser action.","actionInstruction3":"Examples: \\"Click the first search result\\", \\"Scroll to the reviews section\\", \\"Wait for the page to load\\"","assertionTooltip":"An Assertion verifies that something on the page matches your expectations. Examples: \\"The page title should contain Welcome\\", \\"The error message should be visible\\", \\"The cart total should be $99.99\\". Tests will fail if assertions are not met. (Ctrl+Alt+T)","assertionInstruction1":"An Assertion verifies that something on the page matches your expectations.","assertionInstruction2":"Tests will fail if assertions are not met.","assertionInstruction3":"Examples: \\"The page title should contain Welcome\\", \\"The error message should be visible\\", \\"The cart total should be $99.99\\"","editInstruction1":"Edit this statement's configuration, description, or parameters.","editInstruction2":"For actions and assertions, you can modify the natural language description.","editInstruction3":"For code blocks, edit the JavaScript directly.","duplicateTooltip":"Duplicate this statement and all its contents. Useful for creating similar actions with minor variations or repeating patterns. The copy will be inserted immediately after this statement.","duplicateInstruction1":"Duplicate this statement and all its contents.","duplicateInstruction2":"Useful for creating similar actions with minor variations or repeating patterns.","duplicateInstruction3":"The copy will be inserted immediately after this statement.","deleteTooltip":"Delete this statement permanently. For containers like Steps or If/Else blocks, this will also delete all nested statements. Use Ctrl+Alt+D for quick deletion. (Ctrl+Alt+D)","deleteInstruction1":"Permanently removes this statement from the test case.","deleteInstruction2":"For containers like Steps or If/Else blocks, this will also delete all nested statements.","deleteInstruction3":"Use Ctrl+Alt+D for quick deletion.","codeTooltip":"Code blocks execute custom JavaScript directly in the browser context. Use for complex logic, data manipulation, or operations not easily expressed in natural language. Examples: calculating values, parsing JSON, setting cookies, or interacting with browser APIs. Code has access to the page object and all Playwright APIs. (Ctrl+Alt+C)","codeInstruction1":"Code blocks execute custom JavaScript directly in the browser context.","codeInstruction2":"Use for complex logic, data manipulation, or operations not easily expressed in natural language.","codeInstruction3":"The code has access to the page object and can use await for async operations.","codeInstruction4":"Examples: Calculate values, parse JSON, set cookies, or interact with browser APIs.","functionTooltip":"Functions are reusable test components that accept parameters. Use them to avoid duplicating common sequences like login flows, form submissions, or navigation patterns. Example: A \\"Login\\" function with username and password parameters can be reused across multiple tests. (Ctrl+Alt+F)","functionInstruction1":"Functions are reusable test components that accept parameters.","functionInstruction2":"Use them to avoid duplicating common sequences like login flows, form submissions, or navigation patterns.","functionInstruction3":"Examples: A \\"Login\\" function with username and password parameters can be reused across multiple tests.","uploadFileTooltip":"Upload File actions attach files from your Test Data library to file input elements on the page. First upload files in the Test Data section, then select them here. Useful for testing file uploads, document processing, or image submissions. The action automatically handles file input elements and drag-and-drop zones. (Ctrl+Alt+U)","uploadFileInstruction1":"Upload File actions attach files from your Test Data library to file input elements on the page.","uploadFileInstruction2":"First upload files in the Test Data section, then select them here.","uploadFileInstruction3":"Useful for testing file uploads, document processing, or image submissions.","uploadFileInstruction4":"The action automatically handles file input elements and drag-and-drop zones.","extractTooltip":"Extract actions capture content from the page and save it to variables for later use. Examples: \\"Extract the order confirmation number and save to orderNumber\\", \\"Extract the user ID from the profile page and save to userId\\". These variables can be referenced in subsequent actions using $variableName syntax. (Ctrl+Alt+E)","extractInstruction1":"Extract actions capture content from the page and save it to variables for later use.","extractInstruction2":"These variables can be referenced in subsequent actions using $variableName syntax.","extractInstruction3":"Examples: \\"Extract the order confirmation number and save to orderNumber\\", \\"Extract the user ID from the profile page and save to userId\\".","waitUntilTooltip":"Wait for a specific condition to be met before continuing. Use natural language to describe what to wait for, like \\"The loading spinner disappears\\" or \\"The success message appears\\". Set a maximum timeout to prevent tests from hanging. (Ctrl+Alt+W)","waitUntilInstruction1":"Wait for a specific condition to be met before continuing.","waitUntilInstruction2":"Use natural language to describe what to wait for.","waitUntilInstruction3":"Examples: \\"The loading spinner disappears\\", \\"The success message appears\\".","waitUntilInstruction4":"Set a maximum timeout to prevent tests from hanging.","groupTooltip":"Groups are logical containers that organize related actions together. Use them to structure your test into meaningful sections like \\"User Registration\\", \\"Checkout Process\\", or \\"Search and Filter\\". Groups can be collapsed/expanded and help with test readability and maintenance. (Ctrl+Alt+G)","groupInstruction1":"Groups are logical containers that organize related actions together.","groupInstruction2":"Use them to structure your test into meaningful sections like \\"User Registration\\", \\"Checkout Process\\", or \\"Search and Filter\\".","groupInstruction3":"Groups can be collapsed/expanded and help with test readability and maintenance.","templateTooltip":"Templates are pre-defined step groups. Convert this statement to a template reference, then select a template to auto-populate common test patterns like login, navigation, or form submission. (Ctrl+Alt+R)","templateInstruction1":"Templates reference pre-defined step groups for common test patterns.","templateInstruction2":"After conversion, select a template to auto-populate actions.","templateInstruction3":"Examples: login flow, navigation, form submission, data verification.","templateInstruction4":"Helps maintain consistency across tests and reduces duplication.","extractEmailContentTooltip":"Extract specific content from emails like verification codes, activation links, or custom data. Configure filters to target emails from specific senders, with specific subjects, or containing certain text. The extracted content is automatically saved as a variable for use in subsequent test steps.","extractEmailContentInstruction1":"Extract specific content from emails like verification codes or activation links.","extractEmailContentInstruction2":"Configure filters to target emails from specific senders or with specific subjects.","extractEmailContentInstruction3":"Set custom prompts to guide the extraction process.","extractEmailContentInstruction4":"Extracted content is automatically saved as a variable for use in subsequent steps.","ifElseTooltip":"If/Else statements execute different actions based on conditions. The condition can be JavaScript code or natural language. Example: \\"If the user is logged in\\" then perform checkout actions, else show login form. Useful for handling different states, A/B tests, or dynamic content. (Ctrl+Alt+I)","ifElseInstruction1":"If/Else statements execute different actions based on conditions.","ifElseInstruction2":"The condition can be JavaScript code or natural language.","ifElseInstruction3":"Examples: \\"If the user is logged in\\" then perform checkout actions, else show login form.","loopTooltip":"While loops repeat a set of actions as long as a condition is true. Examples: \\"While there are more pages\\" click next and extract data, \\"While the loading spinner is visible\\" wait. Use for pagination, polling for changes, or processing lists of unknown length. Include a maximum iteration limit to prevent infinite loops. (Ctrl+Alt+L)","loopInstruction1":"While loops repeat a set of actions as long as a condition is true.","loopInstruction2":"The condition is checked before each iteration.","loopInstruction3":"Examples: \\"While there are more pages\\" click next and extract data, \\"While the loading spinner is visible\\" wait."},"stepStatement":{"groupActions":"Group Actions","clearAll":"Clear All","clearAllTooltip":"Remove all statements from this step container. This action cannot be undone.","clearAllItem1":"Remove all statements from this step container.","clearAllItem2":"This action cannot be undone.","saveAsTemplateTooltip":"Save this group as a template that can be reused in other test cases.","saveAsTemplateItem1":"Save this group as a template.","saveAsTemplateItem2":"The template can be used in other test cases.","saveAsTemplateItem3":"Current group will be converted to reference the new template."},"createForm":{"titleLabel":"Title","titlePlaceholder":"Enter test case title","showLess":"Show Less","showMore":"Show More","startingUrlLabel":"Starting URL","testAccountLabel":"Test Account","disableAutoLogin":"Disable auto login","targetPlatformLabel":"Target Platform and Device","selectSpecificDevice":"Select specific device","loadingDevices":"Loading devices...","selectAndroidDevice":"Select Android device","iosComingSoon":"iOS device selection coming soon","nativeMobileTesting":"Native mobile app testing via Appium","deviceOptimized":"Test will be optimized for the selected device viewport and characteristics","folderLabel":"Folder","folderOptional":"(optional)","folderPlaceholder":"Select a folder (leave empty for root)","folderHint":"Test case will be created in the selected folder","testCreationMode":"Test Creation Mode","aiGenerate":"AI Generate","aiGenerateDescription":"AI automatically generates test cases","aiImport":"AI Import","aiImportDescription":"Import test cases via YAML upload","single":"Single","batch":"Batch","goalLabel":"Goal","goalOptional":"(optional)","goalPlaceholder":"Describe what you want to test. For example: 'Login to the application and verify the dashboard is displayed'. Or Leave empty to use the no-code editor...","goalHint":"With a goal, AI generates test steps automatically. Without a goal, use the agentic no-code editor to build steps.","testFlowYamlLabel":"Test Flow YAML","testFlowYamlRequired":"(required)","testFlowYamlHint":"Paste exported test case YAML. AI will import and structure the test flow automatically.","testFlowYamlPlaceholder":"Paste exported test case YAML. For example:\\n\\ngoal: Verify user can log in and see dashboard\\nurl: https://example.com\\nstatements:\\n - Navigate to https://example.com/login\\n - Enter \\"test@example.com\\" in the email field\\n - Enter \\"Password123!\\" in the password field\\n - Click the \\"Sign in\\" button\\n - VERIFY: Dashboard is visible\\n\\nOr paste a full exported YAML from an existing test case.","yamlRequired":"Please upload a valid YAML file with test cases","testFlowYamlContentRequired":"Test flow YAML is required","csvRequired":"Please upload a valid CSV file with test cases","modifyTest":"Modify Test","saveTestCase":"Save Test Case","createWithCopilot":"Create with Copilot","creating":"Creating...","creatingCount":"Creating {count} Test Cases...","createCount":"Create {count} Test Cases","createTestCases":"Create Test Cases","createTestCase":"Create Test Case","createNewTestCase":"Create New Test Case","failedToCreateTestCase":"Failed to create test case","retryParamsUnavailable":"Cannot retry: upload parameters not available","generatingTestCases":"Generating test cases...","generatingTestCasesSubText":"Please wait while we generate your test cases. You will be redirected to the test cases list when complete."},"createCodeForm":{"createNewTestCase":"Create New Test Case","agentMode":"Agent Mode","titleLabel":"Title","titlePlaceholder":"Enter test case title","testAccountLabel":"Test Account","setupTest":"Setup Test","teardownTest":"Teardown Test","saveTestCase":"Save Test Case"},"generalSettings":{"settingsTitle":"Settings","disableAutoLogin":"Disable Auto Login","disableAutoLoginTooltip":"When enabled, the test will not automatically log in using the selected environment.","autoDismissModal":"Auto Dismiss Modal","autoDismissModalTooltip":"When enabled, the test will automatically dismiss modals (like cookie consent) during self-healing.","autoFix":"Auto Fix","autoFixTooltip":"Override the organization default for this test case. When enabled, AI will automatically analyze and fix test failures.","autoFixDefault":"Default ({state})","autoFixOn":"On","autoFixOff":"Off","autoFixStateOn":"On","autoFixStateOff":"Off","targetDevice":"Target Device","browserLocale":"Browser Locale","browserLocaleTooltip":"Override the browser's language and timezone for this test. Leave blank to use the browser default.","language":"Language","languagePlaceholder":"Default (en-US)","timezone":"Timezone","timezonePlaceholder":"Default (America/Los_Angeles)","browserMedia":"Browser Media","browserMediaTooltip":"Enables fake camera/microphone + auto-accept media prompts for Chromium. Other browsers ignore these settings.","enableCamera":"Enable Camera","enableMicrophone":"Enable Microphone","fileIdNameNotLoaded":"FILE-{id} (name not loaded)","selectAudioFile":"Select audio file for microphone","audioFileHint":"Audio file from test data to use for fake microphone capture","selectAudioFileModalTitle":"Select Audio File for Microphone","noAudioFiles":"No audio files (.wav or .mp3) found in test data. Upload audio files to use them as microphone input.","browserExtension":"Browser Extension","browserExtensionTooltip":"Loads a Chrome extension from test data (.crx or .zip). Only supported in Chromium and headed mode.","enableExtension":"Enable Extension","selectExtensionFile":"Select extension file","extensionFileHint":"Extension package from test data (.crx or .zip)","selectExtensionFileModalTitle":"Select Extension File","noExtensionFiles":"No extension files (.crx or .zip) found in test data. Upload an extension package to use it.","extraHeaders":"Extra HTTP Headers","extraHeadersTooltip":"Add custom HTTP headers sent with every browser request (e.g., authorization tokens, feature flags). Headers are sent in plain text.","extraHeadersAddButton":"Add Header","extraHeadersNamePlaceholder":"Header name","extraHeadersValuePlaceholder":"Header value","extraHeadersColumnName":"Name","extraHeadersColumnValue":"Value","extraHeadersNameRequired":"Header name is required","extraHeadersNameInvalid":"Invalid header name — use letters, digits, hyphens, or underscores only","extraHeadersNameDuplicate":"Header name already exists","environmentConfigurations":"Environment Configurations"},"environmentSelection":{"environment":"Environment","overrideUrl":"Override URL (Optional)","overrideUrlDefaultPrefix":"Default: {url}","overrideUrlPlaceholder":"Enter custom URL","overrideTestAccount":"Override Test Account (Optional)","overrideTestAccountDescription":"By default, the test account configured for each test case's environment will be used","overrideVariables":"Override Variables (Optional)","overrideVariablesDescription":"Variables defined here will override environment variables for this run","accountsSelectedInfo":"{count} accounts selected. Each account will run separately, creating {count} test run{plural} per test case.","addVariable":"Add Variable","keyPlaceholder":"Key","valuePlaceholder":"Value","removeVariable":"Remove variable"},"environmentConfigsList":{"unknownEnvironment":"Unknown Environment","notConfigured":"Not configured","specificAccountsNoneSelected":"Specific accounts (none selected)","unknown":"Unknown","testEditorEnvironmentTooltip":"This environment is used as the default when editing the test steps.","testEditorEnvironment":"Test Editor Environment","setAsStepEditorEnv":"Set as Step Editor Env","startingUrl":"Starting URL","testAccount":"Test Account","hooks":"Hooks","addEnvironmentConfig":"Add Environment Config","allEnvironmentsConfigured":"All environments have been configured","editEnvironmentConfig":"Edit Environment Config","updateConfig":"Update Config","addConfig":"Add Config"},"explorer":{"loadingTestCases":"Loading test cases","loadingSubText":"This won't take long","emptyTitle":"Tests","emptyDescription1":"Tests are automated checks that validate how your product works, from login flows to complex user journeys.","emptyDescription2":"Each test is a sequence of actions and verifications, powered by AI or written step by step, so you can catch issues before users do.","createFirstTest":"Create your first test","documentation":"Documentation","newRootFolder":"New Root Folder","columnName":"Name","columnStatus":"Status","columnPlatform":"Platform","columnLatestResult":"Latest Result","columnCreatedBy":"Created By","filterStatus":"Status","filterLabels":"Labels","filterCreatedBy":"Created By","filterDevice":"Device","filterEnvironment":"Environment","filterTestAccount":"Test Account","filterTestAccountDescription":"Shows test cases where at least one environment config includes the selected test account.","filterLatestResult":"Latest Result","filterHasAutoFix":"Auto Fix","filterOptionActive":"Active","filterOptionDraft":"Draft","filterOptionPassed":"Passed","filterOptionFailed":"Failed","filterOptionNotStarted":"Not Started","filterOptionHasAutoFix":"Has Auto Fix","filterActive":"Filter Active","filterAutoFix":"Filter Auto Fix","filterDraft":"Filter Draft","filterFailed":"Filter Failed","filterNotStarted":"Filter Not Started","filterPassed":"Filter Passed"},"filterBar":{"statusDisplay":"Status","labelsDisplay":"Labels","statusMore":"{first} + {count} more","labelMore":"{first} + {count} more","devicesPlaceholder":"Devices","clearAllFilters":"Clear all filters","clearShort":"Clear","filterActive":"Filter Active","filterDraft":"Filter Draft"},"liveView":{"liveViewTab":"Live View","videoTab":"Video","previewsTab":"Previews","previewsWithCount":"Previews ({count})","deviceTooltip":"Device: {name}","reload":"Reload","reloading":"Reloading...","exitFullScreen":"Exit full screen","fullScreen":"Full screen","liveViewNotAvailable":"Live View Not Available","liveViewNotAvailableDesc":"Live test preview is not available in Code mode. Switch to Agent mode in Settings to use this feature.","testLiveView":"Test Live View","waitingForGeneration":"Waiting for generation to start...","initializingDebug":"Initializing debug session...","clickToStart":"Click the \\"Start\\" or \\"Run\\" button in the left panel to start the browser and see automation in real-time.","noVideoRecording":"No video recording available","generationScreenshot":"Generation screenshot","waitingForScreenshot":"Waiting for generation screenshot...","livePreviewTitle":"Live Preview Title"},"userSelection":{"noneOption":"None","anyOption":"Any","unknownAccount":"Unknown account","selectedAccounts":"{count} selected accounts","searchPlaceholder":"Search accounts...","createdLabel":"Created: {date}"},"viewRecordingModal":{"title":"Test Recording: {title}","noRecordingAvailable":"No recording available for this test case","failedToLoad":"Failed to load recording","noVideoRecording":"No video recording available","browserNotSupported":"Your browser does not support the video tag."},"simpleList":{"searchPlaceholder":"Search test cases...","columnId":"ID","columnName":"Name","columnUpdated":"Updated"},"sidebar":{"testCaseInfo":"Test Case Info","createdAt":"Created At","lastUpdated":"Last Updated","createdBy":"Created By","updatedBy":"Updated By","targetDevice":"Target Device","actions":"Actions","extractKnowledge":"Extract Knowledge","extractingKnowledge":"Extracting Knowledge...","knowledgeExtractedMessage":"Knowledge has been successfully extracted from this test case","failedToExtractKnowledge":"Failed to extract knowledge","failedToExtractKnowledgeFromTestCase":"Failed to extract knowledge from test case","notAvailable":"N/A"},"statementChanges":{"added":"Added ({count})","deleted":"Deleted ({count})","modified":"Modified ({count})","moved":"Moved ({count})"},"assertions":{"placeholder":"Enter assertion description...","emptyText":"Click to add assertion"},"basicAction":{"placeholder":"Enter action description...","emptyText":"Click to add description","findElement":"Find element"},"infoView":{"variablesTab":"Variables","consoleTab":"Logs","noVariables":"No variables available. Start running your test to see variables here.","noConsoleOutput":"No log output available. Logs will appear here during test execution.","clickToExpand":"Click to expand","dragToResize":"Drag to resize"},"resultPopup":{"latestRunResult":"Latest Run Result","status":"Status:","started":"Started:","ended":"Ended:","duration":"Duration:","environment":"Environment:","summary":"Summary:","notStarted":"Not Started","passedWithAutofix":"Passed with autofix"},"testDataSelector":{"selectTestData":"Select Test Data","needToUpload":"Need to upload test data files?","goToSettings":"Go to Settings → Test Data","selectTestDataModalTitle":"Select Test Data","confirmUploadTitle":"Confirm Upload Test Data","confirmUploadDesc":"Upload file {filename} and attach to the test.","done":"Done","cancel":"Cancel","confirm":"Confirm"},"testDataSelectionList":{"searchPlaceholder":"Search test data file name...","columnId":"ID","columnName":"Name","columnLastUpdated":"Last Updated","done":"Done"},"templateSelector":{"placeholder":"Select a template"},"simpleExplorer":{"searchPlaceholder":"Search test cases...","loadingTestCases":"Loading test cases...","selectedCount":"{count} selected","columnName":"Name","columnStatus":"Status","columnCreatedBy":"Created By"},"layout":{"overviewTab":"Overview","settingsTab":"Settings","historyTab":"History","runRecordsTab":"Run Records","codeTab":"Code","playgroundTab":"UX Playground","autofixAvailable":"An autofix is available for this test case.","viewResult":"View result","closeDetails":"Close details"},"runRecordsTab":{"loadError":"Failed to load run records. Please try again.","empty":"No run records yet","emptyHint":"Run records will appear here after the test case has been executed.","columnRunId":"Run ID","columnResult":"Result","columnStarted":"Started","columnDuration":"Duration","columnEnvironment":"Environment","paginationInfo":"{total} records · Page {page} of {totalPages}"},"diffViewer":{"modalTitle":"Test Flow Changes"},"flowEditor":{"teardownTitle":"Teardown","removeTeardown":"Remove","addTeardown":"Add Teardown"},"plansSection":{"schedulesTitle":"Schedules","noSchedulesLinked":"No schedules linked","viaSuiteBadge":"Via Suite"},"suitesSection":{"testSuitesTitle":"Test Suites","noTestSuitesLinked":"No test suites linked"},"csvSection":{"uploadCsvFile":"Upload CSV File","downloadTemplate":"Download Template","selectCsvFile":"Select CSV file","csvFormatTitle":"CSV Format Requirements","formatDescription":"Your CSV file must contain \\"title\\" and \\"goal\\" columns. The goal column should contain a description of what you want to test. AI will automatically generate test steps based on each goal. Click \\"Download Template\\" above to get a sample file with the correct format.","exampleFormat":"Example format (use quotes for fields containing commas or newlines):","exampleCsv":"title,goal\\nLogin Test,\\"Test login with valid credentials\\"\\nCheckout Test,\\"Test checkout process with multiple items\\"","tipCommasAndNewlines":"Tip: Handling commas and newlines: Wrap fields containing commas or newlines in double quotes","tipIncludingQuotes":"Tip: Including quotes: Use double quotes (\\"\\") to include actual quotes in text","tipGoalFormat":"Tip: Goal format: Provide a clear description of what you want to test (e.g., \\"Test login functionality\\" or \\"Verify checkout process\\")","parsingCsv":"Parsing CSV file...","previewCount":"Preview ({count} test case{plural})","columnTitle":"Title","columnGoal":"Goal","columnTestFlow":"Test Flow","errors":{"fileTooLarge":"File size too large. Please upload a file smaller than 5MB","emptyFile":"CSV file is empty. Please upload a file with test case data","missingHeaderOrData":"CSV file must contain at least a header row and one data row. Please check your file format","missingRequiredColumns":"CSV file must contain \\"title\\" and \\"goal\\" columns. Found columns: {columns}","rowMissingRequiredColumns":"Row {row}: Missing required columns (expected at least {minColumns} columns)","rowMissingTitle":"Row {row}: Missing title","rowMissingGoal":"Row {row}: Missing goal","rowTitleTooLong":"Row {row}: Title too long (max 200 characters)","rowGoalTooLong":"Row {row}: Goal too long (max 2000 characters)","noValidRowsWithDetails":"No valid test cases found. Errors:\\n{errors}{more}","noValidRows":"No valid test cases found in CSV file. Please check your file format","tooManyRows":"Too many test cases. Please limit to 100 test cases per upload","parseFailed":"Failed to parse CSV file. Please check the file format and try again","readFailed":"Failed to read CSV file. Please try again or use a different file","invalidExtension":"Please upload a CSV file"}},"yamlSection":{"uploadYamlFile":"Upload YAML File","downloadTemplate":"Download Template","selectYamlFile":"Select YAML file (.yaml or .yml)","yamlFormatTitle":"YAML Format Requirements","parsingYaml":"Parsing YAML file...","previewCount":"Preview ({count} test case{plural})","columnTitle":"Title","columnGoal":"Goal"},"screencast":{"connecting":"Connecting to screencast...","failedToConnect":"Failed to connect to screencast","disconnected":"Screencast disconnected","browserScreencast":"Browser Screencast"},"multiPageViewer":{"noPagesOpen":"No pages open","connectingToBrowser":"Connecting to browser...","closeInspector":"Close Inspector","openInspector":"Open Inspector","pickingLocator":"Picking locator...","cancelLocatorPicking":"Cancel locator picking","failedToConstructUrl":"Failed to construct DevTools URL","recording":"Recording","record":"Record","clickToStopRecording":"Click to Stop Recording","clickToStartRecording":"Click to Start Recording","picking":"Picking","pick":"Pick","clickToStopPicking":"Click to Stop Picking Element","clickToStartPicking":"Click to Start Picking Element"},"agentFixDiffViewer":{"diffSummaryTitle":"Diff Summary","originalTestFlow":"Original Test Flow","agentFixedTestFlow":"Agent-Fixed Test Flow","changedCount":"{count} changed","statementsCount":"{count} statements","changeLabel":"Change","noChanges":"No changes","noStatements":"No statements to display","changeDetails":"Change Details","deletedInModified":"Deleted in modified","addedInModified":"Added in modified"},"videoPreview":{"creatingTestCase":"Creating Test Case","recordingWillAppearSoon":"Test recording will appear here shortly","testRecordingPreview":"Test Recording Preview","recordingWillAppear":"Test recording will appear here","browserNotSupported":"Your browser does not support the video tag."},"imageViewer":{"noImagesAvailable":"No Images Available","noImagesDesc":"Images will appear here when available from test execution or debugging."},"actionGenerationDebugView":{"tabSystemPrompt":"System Prompt","tabUserPrompt":"User Prompt","tabReasoningContent":"Reasoning Content","tabRawResponse":"Raw Response","tabKnowledge":"Knowledge ({count})","tabCuaInput":"CUA Input","tabCuaResponse":"CUA Response"},"labels":{"labelsTitle":"Labels"},"csvImportProgress":{"backgroundInfo":"You can close this window at any time. The import process will continue in the background.","columnTitle":"Title","columnStatus":"Status","statusPending":"Pending","statusCreating":"Creating","statusGenerating":"Generating","statusCompleted":"Completed","statusError":"Error","goToTestCases":"Go To Test Cases"},"historyViewer":{"title":"Test Flow History Version","updatedAt":"{name} updated at {timeAgo}"},"generationView":{"queued":"Queued","regenerating":"({count})Regenerating a better test","generating":"Generating"}}`);
|
|
201499
|
+
const TestCases = /* @__PURE__ */ JSON.parse(`{"cannotUpdateSystemViews":"Cannot update system views","viewUpdatedSuccessfully":"View updated successfully","failedToUpdateView":"Failed to update view","generateAiTitle":"Generate AI Title","revertToOriginalTitle":"Revert to Original Title","runInCloud":"Run in Cloud","hideDetails":"Hide details","showDetails":"Show details","testMustBeActiveToRunInCloud":"Test must be Active to run in cloud","cannotRunTest":"Cannot Run Test","testCaseMustBeActiveToRun":"Test case must be Active to run","failedToLoadTestCaseDetails":"Failed to load test case details","failedToUpdateTestCaseStatus":"Failed to update test case status","testCaseDuplicatedSuccessfully":"Test case duplicated successfully","failedToDuplicateTestCase":"Failed to duplicate test case","testCaseStatusUpdated":"Test case status updated","runTest":"Run Test","testCaseMustBeActive":"Test Case must be Active to run","viewRecording":"View Recording","noRecordingAvailable":"No Recording Available","deleteTestCaseTitle":"Delete test case?","deleteTestCaseInUse":"This test case is used as a dependency for other tests. Please remove the dependency first.","deleteTestCaseConfirm":"Are you sure you want to delete","deleteTestCaseUndone":"This action cannot be undone.","setupBadgeLabel":"Setup","setupBadgeTooltip":"This test is used as a setup test for other tests","teardownBadgeLabel":"Teardown","teardownBadgeTooltip":"This test is used as a teardown test for other tests","loadingTestCaseDetails":"Loading test case details","deleteSelected":"Delete Selected","deleteTestCasesTitle":"Delete test cases?","deleteTestCasesInUse":"Some test cases are used as dependencies for other tests. Please remove these dependencies first.","theseTestCases":"These test cases","thisTestCase":"This test case","statusLabel":"Status","labelsLabel":"Labels","failedToUpdateTestCaseLabel":"Failed to update test case label","detailPage":{"failedToLoadTestCase":"Failed to load test case","testCaseNotFound":"Test case not found","returnToTestCases":"Return to Test Cases","retry":"Retry"},"runTestModal":{"titleSingle":"Run Test in Cloud","titleMultiple":"Run {count} Test Case(s) in Cloud","titleSuite":"Run Test Suite in Cloud","titleSchedule":"Run Schedule in Cloud","runButton":"Run Test","runMultipleButton":"Run {count} Test(s)","envDescription":"Only environments configured for this test case are shown","envMultiDescription":"Test cases will run using the selected environment. Test cases that don't support this environment will be skipped."},"failedToLoadTestAccounts":"Failed to load test accounts","fixAcceptedTitle":"Fix accepted","fixAcceptedMessage":"The AI fix has been applied to the test case.","fixRejectedTitle":"Fix rejected","fixRejectedMessage":"The AI fix has been rejected and will not be used in future runs.","testFlowReverted":"Test flow reverted to this version","environmentRequired":"Environment is required","environmentSetAsStepEditorEnv":"Environment set as step editor env successfully","deleteEnvironmentConfigTitle":"Delete Environment Config?","environmentConfigDeletedSuccessfully":"Environment config deleted successfully","knowledgeExtractedTitle":"Knowledge Extracted","extractionFailedTitle":"Extraction Failed","saveBLockedTitle":"Save Blocked","saveBlockedNestedTemplates":"Templates cannot contain nested templates. Remove nested template references before saving.","templateInsertedTitle":"Template Inserted","templateInsertedMessage":"Template content inserted as a normal group. Nested templates are not allowed, so the content has been copied instead of referenced.","sessionTimedOutTitle":"Session timed out","sessionTimedOutMessage":"Your session was reset due to inactivity. Start debug again to continue.","testFlowUnsavedChangesTitle":"Test flow has unsaved changes","testFlowUnsavedChangesMessage":"Current test flow has unsaved changes. Please save first, or leave this page and discard the changes.","continueEditing":"Continue Editing","discardAndLeave":"Discard And Leave","failedToLoadTestAccountsNotification":"Failed to load test accounts","loadingTestCaseDetailsState":"Loading test case details...","generatingTestCase":"Generating Test Case","stop":"Stop","generatingDescription":"This might take a few minutes. You can stop the process at any time.","agentCouldNotComplete":"Agent could not complete the task","dismissWarning":"Dismiss warning","nativeTestWarning":"Native app tests (Android/iOS) can only be edited and debugged in the desktop app.","convertingTestFormat":"Converting test format...","selectPlaceholder":"Select {title}","viewTestCaseTooltip":"View test case: {title}","summaryTitle":"Summary","generateAiSummary":"Generate AI Summary","resetToOriginalSummary":"Reset to original summary","saving":"Saving...","clickToAddSummary":"Click to add a test summary...","labelsTitle":"Labels","addLabel":"Add label","testSuitesTitle":"Test Suites","addToTestSuite":"Add to test suite","statusGenerating":"AI agent is generating your test case","statusQueued":"Test case is queued for generation","statusGeneratingLabel":"Generating","statusQueuedLabel":"Queued","changeStatus":"Change Status","searchTestCases":"Search test cases...","columnId":"ID","columnName":"Name","columnStatus":"Status","setupTeardownMenu":{"selectTitle":"Select {title}"},"parameterSets":{"description":"Named variable sets. Each enabled set produces an independent result row when the test is run in this schedule.","columnLabel":"Label","columnVariables":"Variables","columnEnabled":"Enabled","defaultLabel":"Default","testCaseVariablesLabel":"test case variables","addParameterSet":"Add Parameter Set","editParameterSet":"Edit Parameter Set","editDefaultVariables":"Edit Default Variables","deleteParameterSet":"Delete Parameter Set","labelField":"Label","labelPlaceholder":"e.g. Admin, Guest User","labelAlreadyExists":"A parameter set with this label already exists.","deleteConfirm":"Are you sure you want to delete this parameter set? This cannot be undone.","editDefaultDescription":"These are the test case's own variables. Changes here update the test case settings and apply to all schedules that don't override them with a custom parameter set.","add":"Add","update":"Update"},"variables":{"title":"Variables","description":"Variables scoped to this test case. They override environment and global variables with the same name.","columnName":"Name","columnValue":"Value","addVariable":"Add Variable","namePlaceholder":"name","valuePlaceholder":"value","nameRequired":"Required","nameAlreadyExists":"Already exists","sensitiveMasked":"Sensitive: value is masked in the UI and logs","markSensitive":"Mark as sensitive to mask the value in the UI and logs"},"debuggerWarnings":{"heading":"Statements have been modified during debugging","body":"Changes made during debugging session may not reflect actual execution behavior. Consider restarting the debugging session to ensure consistency."},"debuggerButtonBar":{"undoRevert":"Undo revert","revertChanges":"Revert changes","undo":"Undo","revert":"Revert","saveChanges":"Save all changes to statements","noChanges":"No changes to save","save":"Save","saved":"Saved","disabledDuringGeneration":"Disabled during test generation","startWithOverride":"Initialize debugging session with URL override: {url} (Ctrl + R)","startDebugging":"Initialize debugging session and execute first statement (Ctrl + R)","noMoreStatements":"No more statements to execute","executeNext":"Execute the next statement in sequence (Ctrl + R)","urlOverrideTooltip":"URL override: {url}","setUrlOverride":"Set URL override","urlOverrideSection":"URL Override","urlOverridePlaceholder":"https://example.com/path","waitingForStep":"Waiting for current step to complete...","pauseExecution":"Pause execution after current step","executeAll":"Execute all remaining statements","pause":"Pause","run":"Run","resetSession":"Reset session","reset":"Reset","start":"Start","step":"Step"},"statementBadge":{"unsavedChanges":"Unsaved changes"},"ifElseStatement":{"then":"Then","else":"Else","expandThen":"Expand then branch","collapseThen":"Collapse then branch","expandElse":"Expand else branch","collapseElse":"Collapse else branch","clearThenBranch":"Clear Then Branch","clearThenTooltip":"Remove all statements from the THEN branch. The ELSE branch (if present) will not be affected. This action cannot be undone.","addElseBranch":"Add else branch","removeElseBranch":"Remove else branch","aiCondition":"AI Condition: Natural language evaluation","jsCondition":"JS Condition: JavaScript expression","ifElseActions":"If/Else Actions","clickToAddCondition":"Click to add condition","disabled":"Disabled","conditionPlaceholder":"Enter condition expression...","clearThenItem1":"Remove all statements from the THEN branch.","clearThenItem2":"The ELSE branch (if present) will not be affected.","clearThenItem3":"This action cannot be undone."},"whileLoopStatement":{"loopBody":"Loop Body","expandLoop":"Expand loop body","collapseLoop":"Collapse loop body","secondsMax":"seconds max","clearLoopBody":"Clear Loop Body","clearLoopTooltip":"Remove all statements from the loop body. The loop condition will remain unchanged. This action cannot be undone.","aiCondition":"AI Condition: Natural language evaluation","jsCondition":"JS Condition: JavaScript expression","loopActions":"Loop Actions","clickToAddCondition":"Click to add condition","disabled":"Disabled","conditionPlaceholder":"Enter loop condition...","clearBodyItem1":"Remove all statements from the loop body.","clearBodyItem2":"The loop condition will remain unchanged.","clearBodyItem3":"This action cannot be undone."},"floatingAddButton":{"addNewStep":"Add a new step"},"floatingActionBar":{"run":"Run this step","runUntil":"Run until this step","moveUp":"Move up","moveDown":"Move down","duplicate":"Duplicate","edit":"Modify","delete":"Delete","rollback":"Rollback to this statement","skipTo":"Skip to this statement"},"saveTemplate":{"title":"Save as Template","nameLabel":"Name","namePlaceholder":"e.g., user-registration, checkout-flow","nameDescription":"Give this template a unique name for easy identification","nameRequired":"Name is required","nameExists":"Name \\"{name}\\" already exists","description":"Description","nameAlreadyExists":"Name Already Exists"},"selectTemplate":{"title":"Select Template","searchPlaceholder":"Search templates...","noMatch":"No templates match your search","noTemplates":"No templates available","columnName":"Name","columnDescription":"Description","copyTooltip":"Insert as independent copy. Changes to the template won't affect this group.","linkTooltip":"Link to template. This group will stay in sync with the template.","linkDisabledTooltip":"Templates can't link other templates. Use Copy instead.","copy":"Copy","link":"Link","copyButton":"Copy Button","linkButton":"Link Button","noTemplatesAvailable":"No Templates Available","noTemplatesMatchSearch":"No Templates Match Search"},"statementList":{"noStatements":"No statements","noStatementsReadOnly":"No statements (read-only)"},"suiteSectionDivider":{"skipped":" (skipped)","skippedSuffix":"Skipped Suffix"},"codeEditor":{"cancelTooltip":"Cancel (Esc)","confirmTooltip":"Confirm code (Ctrl+Enter)","hint":"Press Ctrl+Enter to confirm, Esc to cancel","unsavedChanges":"• Unsaved changes","clickToOpen":"Click to open code editor"},"actionEntityEditor":{"cancelTooltip":"Cancel (Esc)","confirmTooltip":"Confirm changes (Ctrl+Enter)","hint":"Press Ctrl+Enter to confirm, Esc to cancel","shortcutHint":"{modifier}+↵ save · esc cancel","unsavedChanges":"• Unsaved changes","missingActionName":"Missing action name","invalidYaml":"Invalid YAML","viewTitle":"View action entity","editTitle":"Click to edit action entity"},"extractContentEditor":{"configurePrompt":"Click to configure variable extraction...","extractAndSave":"Extract <elem>{element}</elem> and save to <var>{variable}</var>","clickToEdit":"Click to edit","clickToConfigure":"Click to configure","configurePlaceholder":"Configure Placeholder","extractDisplayText":"Extract Display Text"},"extractContentModal":{"title":"Extract Content Configuration","whatToExtract":"What to extract","extractPlaceholder":"e.g., order number, user name, price from the table...","extractDescription":"Describe the page element or content you want to extract","variableName":"Variable name","variablePlaceholder":"e.g., orderNumber, userName, tablePrice","variableDescription":"Name of the variable to store the extracted value","extractContent":"Extract Content"},"extractEmailContentEditor":{"noConfigured":"No email content extraction configured","configurePrompt":"Click to configure email content extraction...","variableTooltip":"The variable name will be used to store the extracted content.","variableLabel":"Variable: {name}","clickToConfigure":"Click To Configure","clickToEdit":"Click To Edit","configurePlaceholder":"Configure Placeholder","noConfig":"No Config"},"extractEmailContentModal":{"title":"Email Content Extraction Configuration","selectConfig":"Select configuration","selectConfigPlaceholder":"Select a saved configuration","forwardEmail":"Forward Email","extractionType":"Extraction Type","extractionTypePlaceholder":"Select extraction type","extractionTypeDescription":"The type of content to extract from emails","prompt":"Prompt","promptPlaceholder":"Enter custom prompt for extraction (optional)","promptDescription":"Optional: Custom prompt to guide the extraction process","filterFromEmail":"Filter From Email","filterFromPlaceholder":"Enter email address to filter by sender","filterFromDescription":"Required: Email address to filter emails by sender","filterToEmail":"Filter To Email","filterToPlaceholder":"Enter email address to filter by recipient (optional)","filterToDescription":"Optional: Email address to filter emails by recipient","filterSubject":"Filter Subject","filterSubjectPlaceholder":"Enter subject text to filter by (optional)","filterSubjectDescription":"Optional: Text that must be contained in the email subject","filterBodyContains":"Filter Body Contains","filterBodyPlaceholder":"Enter text that must be in email body (optional)","filterBodyDescription":"Optional: Text that must be contained in the email body","extractionTypeRequired":"Extraction type is required","filterFromEmailRequired":"Filter from email is required"},"fileUploadEditor":{"uploadFile":"Upload file","uploadFiles":"Upload {count} files","noFilesSelected":"No files selected","selectFiles":"Select files to upload","clickToChange":"Click to change files"},"fileUploadModal":{"title":"Select Test Data Files","targetLabel":"(Optional) Upload Target Description","targetSublabel":"(when there are multiple on the page)","targetPlaceholder":"Target description (optional, e.g., 'profile picture upload')","searchPlaceholder":"Search files by name...","loadError":"Failed to load test data files","noFilesMatch":"No files match your search","noFilesAvailable":"No test data files available. Upload files in the Test Data section to use them here.","clearTarget":"Clear target description","selectFile":"Select File","selectFiles":"Select {count} Files","pickFromLocal":"Pick local files"},"functionEditor":{"noParameters":"No parameters","configuredViaModal":"Functions are configured via modal dialog"},"loginEditor":{"configurePrompt":"Click to configure login credentials...","clickToEdit":"Click to edit login configuration","clickToConfigure":"Click to configure login","configurePlaceholder":"Configure Placeholder"},"loginModal":{"title":"Login Configuration","environment":"Environment","environmentPlaceholder":"Select environment (optional)","environmentDescription":"Optional: Environment to login to. If not specified, the session's default environment will be used.","testAccount":"Test Account","selectTestAccount":"Select test account","noAccountsForEnv":"No test accounts available for this environment","noGlobalAccounts":"No global test accounts available","testAccountRequired":"Test Account ID is required","selectAccountDescription":"Select the test account to use for login","createdPrefix":"Created:","idPrefix":"ID:","saveConfiguration":"Save Configuration"},"waitUntilEditor":{"conditionPlaceholder":"Condition: e.g., The loading spinner disappears","clickToAdd":"Click to add wait condition","secondsMaxWait":"seconds max wait","maxTimeoutReached":"Maximum 300s"},"jsonViewer":{"base64ImageLabel":"[Base64 Image - Click to view]","imagePreview":"Image Preview","base64ImageAlt":"Base64 image preview","imageAlt":"Image preview","imagePreviewAlt":"Image Preview Alt","previewTitle":"Preview Title"},"codeTab":{"description":"This code is dynamically generated from the test flow. Edit steps in the Steps tab to modify the test.","error":"Error: {error}","readOnlyPreview":"Read-only preview"},"settingsTab":{"loadingDetails":"Loading test case details...","failedToLoadAccounts":"Failed to load test accounts"},"actionStatement":{"showHideDetails":"Show/Hide details","showDebugInfo":"Show debug info","removeLocator":"Remove locator","debugInfoTitle":"Action Generation Debug Info","picking":"Picking...","pickLocator":"Pick Locator","aiAssertion":"AI Assertion: Natural language verification","jsAssertion":"JS Assertion: Playwright expect expression","aiGroup":"AI Group: Natural language description","groupContainer":"Group Container: Contains nested statements","aiAction":"AI Action: Auto-adapts to page changes","regularAction":"Uses cached element selectors","pureVision":"Pure Vision: Uses only visual analysis","hybridMode":"Hybrid Mode: Uses DOM + visual analysis","settings":"Settings","aiModeLabel":"AI Mode","pureVisionLabel":"Use Vision Only","pureVisionOn":"Pure Vision: Uses only visual analysis","pureVisionOff":"Hybrid Mode: Uses DOM + visual analysis","clearCache":"Clear Cache","cachedAction":"Cached: {actionName}","noCache":"No cached result. Run the step to create one.","disableCacheLabel":"Disable Cache","disableCacheInfo":"When enabled, the step will use AI to dynamically locate elements instead of cached selectors. Runs with cached selectors first, then falls back to AI if cache fails. This is useful when page layout changes frequently.","pureVisionInfo":"When enabled, the step uses only visual (screenshot) analysis without DOM inspection. Useful for canvas-based or non-standard UI elements.","switchType":"Action Type","usingJsCode":"JS Execution","usingJsCodeInfo":"When enabled, the assertion uses a JavaScript Playwright expect expression. Runs with JS first, then falls back to AI if JS fails. When disabled, it uses AI to verify conditions with natural language."},"actionEditor":{"selectActionType":"Select an action type from the dropdown above...","enterAssertion":"Enter assertion description...","functionModal":"Function will be configured via modal...","loginModal":"Login credentials will be configured via modal...","emailModal":"Email extraction will be configured via modal...","waitCondition":"Wait condition will be configured below...","enterAction":"Enter action description...","clickToAdd":"Click to add description"},"newStepEditor":{"loadingDetails":"Loading test case details...","agentCouldNotComplete":"Agent Could Not Complete","convertingFormat":"Converting Format","dismissWarning":"Dismiss Warning"},"actionWithSwitch":{"aiAction":"AI Action","action":"Action","switchToRegular":"Switch to regular action","switchToAi":"Switch to AI action"},"debugStatusIcon":{"skipped":"Skipped","streaming":"Streaming...","executing":"Executing...","executionSuccessful":"Execution successful","executionFailed":"Execution failed","nextStatement":"Next statement to be executed","convertedToAi":"Statement was converted to AI mode for successful execution"},"conditionInput":{"placeholder":"Enter condition expression...","disabled":"Disabled","clickToAddCondition":"Click to add condition"},"environmentConfigForm":{"testAccount":"Test Account","setAsDefault":"Set as default environment for Test Editor","setAsDefaultDescription":"This environment will be used as the default when editing the test steps.","hooksDescription":"Templates that run before/after test execution"},"latestRun":{"notAvailable":"N/A","invalidDate":"Invalid date","seconds":"{totalSeconds} seconds","pending":"Pending","latestResult":"Latest Result","viewRunDetails":"View run details (#{id})","result":"Result","startTime":"Start Time","endTime":"End Time","duration":"Duration","environment":"Environment","default":"Default"},"resizableEditor":{"editor":"Editor","preview":"Preview","clickToExpand":"Click to expand","clickToCollapse":"Click to collapse","dragToResize":"Drag to resize"},"statementWrapper":{"skipped":"Skipped","failed":"Failed","passed":"Passed","addedByAiFix":" · Added by AI fix","modifiedByAiFix":" · Modified by AI fix","movedByAiFix":" · Moved by AI fix","autoHealed":" · Auto healed","showingHealed":"Showing healed action step. Click to switch back to original.","showingOriginal":"Showing original action step. Click to switch to healed.","added":"Added","original":"Original","modified":"Modified","moved":"Moved","draggingDisabled":"Dragging disabled during debugging","dragToReorder":"Drag to reorder","rollbackToStatement":"Rollback to this statement","skipToStatement":"Skip to this statement","executeStatement":"Execute this statement","executeUntilStatement":"Execute until this statement.","executeThisStepDescription":"Executes this step.","executeThisStepItem1":"This will execute the step itself.","executeThisStepItem2":"Use this to quickly test a specific part of the test flow.","runUntilThisStep":"Run Until This Step","runUntilThisStepDescription":"Runs the test flow until this step is executed.","runUntilThisStepItem1":"This will not execute the step itself.","runUntilThisStepItem2":"Use this to quickly test a specific part of the test flow.","currentStatement":"This is the current statement.","editStatement":"Edit Statement","duplicate":"Duplicate","delete":"Delete","actionsLabel":"Actions","draft":"Draft","action":"Action","assertion":"Assertion","code":"Code","function":"Function","uploadFile":"Upload file","extract":"Extract","waitUntil":"Wait Until","group":"Group","template":"Template","extractEmailContent":"Extract Email Content","controlFlows":"Control Flows","ifElse":"If/Else","loop":"Loop","draftTooltip":"A Draft is a flexible statement that converts to Action or Group after execution. Use this when you're not sure if your instruction will need one or multiple steps. After execution, it automatically becomes an Action (single step) or Group (multiple steps) based on what the AI produces. (Ctrl+Alt+B)","draftInstruction1":"A Draft is a flexible statement that converts after execution.","draftInstruction2":"If the AI produces one action, it becomes an Action.","draftInstruction3":"If the AI produces multiple actions, it becomes a Group.","draftInstruction4":"Use this when you're not sure how many steps your instruction will need.","actionTooltip":"An Action performs interactions with the page using natural language descriptions. Examples: \\"Click the submit button\\", \\"Fill in the email field with user@example.com\\", \\"Select California from the state dropdown\\". The AI agent interprets your description and executes the appropriate browser action. (Ctrl+Alt+A)","actionInstruction1":"An Action performs interactions with the page using natural language descriptions.","actionInstruction2":"The AI agent interprets your description and executes the appropriate browser action.","actionInstruction3":"Examples: \\"Click the first search result\\", \\"Scroll to the reviews section\\", \\"Wait for the page to load\\"","assertionTooltip":"An Assertion verifies that something on the page matches your expectations. Examples: \\"The page title should contain Welcome\\", \\"The error message should be visible\\", \\"The cart total should be $99.99\\". Tests will fail if assertions are not met. (Ctrl+Alt+T)","assertionInstruction1":"An Assertion verifies that something on the page matches your expectations.","assertionInstruction2":"Tests will fail if assertions are not met.","assertionInstruction3":"Examples: \\"The page title should contain Welcome\\", \\"The error message should be visible\\", \\"The cart total should be $99.99\\"","editInstruction1":"Edit this statement's configuration, description, or parameters.","editInstruction2":"For actions and assertions, you can modify the natural language description.","editInstruction3":"For code blocks, edit the JavaScript directly.","duplicateTooltip":"Duplicate this statement and all its contents. Useful for creating similar actions with minor variations or repeating patterns. The copy will be inserted immediately after this statement.","duplicateInstruction1":"Duplicate this statement and all its contents.","duplicateInstruction2":"Useful for creating similar actions with minor variations or repeating patterns.","duplicateInstruction3":"The copy will be inserted immediately after this statement.","deleteTooltip":"Delete this statement permanently. For containers like Steps or If/Else blocks, this will also delete all nested statements. Use Ctrl+Alt+D for quick deletion. (Ctrl+Alt+D)","deleteInstruction1":"Permanently removes this statement from the test case.","deleteInstruction2":"For containers like Steps or If/Else blocks, this will also delete all nested statements.","deleteInstruction3":"Use Ctrl+Alt+D for quick deletion.","codeTooltip":"Code blocks execute custom JavaScript directly in the browser context. Use for complex logic, data manipulation, or operations not easily expressed in natural language. Examples: calculating values, parsing JSON, setting cookies, or interacting with browser APIs. Code has access to the page object and all Playwright APIs. (Ctrl+Alt+C)","codeInstruction1":"Code blocks execute custom JavaScript directly in the browser context.","codeInstruction2":"Use for complex logic, data manipulation, or operations not easily expressed in natural language.","codeInstruction3":"The code has access to the page object and can use await for async operations.","codeInstruction4":"Examples: Calculate values, parse JSON, set cookies, or interact with browser APIs.","functionTooltip":"Functions are reusable test components that accept parameters. Use them to avoid duplicating common sequences like login flows, form submissions, or navigation patterns. Example: A \\"Login\\" function with username and password parameters can be reused across multiple tests. (Ctrl+Alt+F)","functionInstruction1":"Functions are reusable test components that accept parameters.","functionInstruction2":"Use them to avoid duplicating common sequences like login flows, form submissions, or navigation patterns.","functionInstruction3":"Examples: A \\"Login\\" function with username and password parameters can be reused across multiple tests.","uploadFileTooltip":"Upload File actions attach files from your Test Data library to file input elements on the page. First upload files in the Test Data section, then select them here. Useful for testing file uploads, document processing, or image submissions. The action automatically handles file input elements and drag-and-drop zones. (Ctrl+Alt+U)","uploadFileInstruction1":"Upload File actions attach files from your Test Data library to file input elements on the page.","uploadFileInstruction2":"First upload files in the Test Data section, then select them here.","uploadFileInstruction3":"Useful for testing file uploads, document processing, or image submissions.","uploadFileInstruction4":"The action automatically handles file input elements and drag-and-drop zones.","extractTooltip":"Extract actions capture content from the page and save it to variables for later use. Examples: \\"Extract the order confirmation number and save to orderNumber\\", \\"Extract the user ID from the profile page and save to userId\\". These variables can be referenced in subsequent actions using $variableName syntax. (Ctrl+Alt+E)","extractInstruction1":"Extract actions capture content from the page and save it to variables for later use.","extractInstruction2":"These variables can be referenced in subsequent actions using $variableName syntax.","extractInstruction3":"Examples: \\"Extract the order confirmation number and save to orderNumber\\", \\"Extract the user ID from the profile page and save to userId\\".","waitUntilTooltip":"Wait for a specific condition to be met before continuing. Use natural language to describe what to wait for, like \\"The loading spinner disappears\\" or \\"The success message appears\\". Set a maximum timeout to prevent tests from hanging. (Ctrl+Alt+W)","waitUntilInstruction1":"Wait for a specific condition to be met before continuing.","waitUntilInstruction2":"Use natural language to describe what to wait for.","waitUntilInstruction3":"Examples: \\"The loading spinner disappears\\", \\"The success message appears\\".","waitUntilInstruction4":"Set a maximum timeout to prevent tests from hanging.","groupTooltip":"Groups are logical containers that organize related actions together. Use them to structure your test into meaningful sections like \\"User Registration\\", \\"Checkout Process\\", or \\"Search and Filter\\". Groups can be collapsed/expanded and help with test readability and maintenance. (Ctrl+Alt+G)","groupInstruction1":"Groups are logical containers that organize related actions together.","groupInstruction2":"Use them to structure your test into meaningful sections like \\"User Registration\\", \\"Checkout Process\\", or \\"Search and Filter\\".","groupInstruction3":"Groups can be collapsed/expanded and help with test readability and maintenance.","templateTooltip":"Templates are pre-defined step groups. Convert this statement to a template reference, then select a template to auto-populate common test patterns like login, navigation, or form submission. (Ctrl+Alt+R)","templateInstruction1":"Templates reference pre-defined step groups for common test patterns.","templateInstruction2":"After conversion, select a template to auto-populate actions.","templateInstruction3":"Examples: login flow, navigation, form submission, data verification.","templateInstruction4":"Helps maintain consistency across tests and reduces duplication.","extractEmailContentTooltip":"Extract specific content from emails like verification codes, activation links, or custom data. Configure filters to target emails from specific senders, with specific subjects, or containing certain text. The extracted content is automatically saved as a variable for use in subsequent test steps.","extractEmailContentInstruction1":"Extract specific content from emails like verification codes or activation links.","extractEmailContentInstruction2":"Configure filters to target emails from specific senders or with specific subjects.","extractEmailContentInstruction3":"Set custom prompts to guide the extraction process.","extractEmailContentInstruction4":"Extracted content is automatically saved as a variable for use in subsequent steps.","ifElseTooltip":"If/Else statements execute different actions based on conditions. The condition can be JavaScript code or natural language. Example: \\"If the user is logged in\\" then perform checkout actions, else show login form. Useful for handling different states, A/B tests, or dynamic content. (Ctrl+Alt+I)","ifElseInstruction1":"If/Else statements execute different actions based on conditions.","ifElseInstruction2":"The condition can be JavaScript code or natural language.","ifElseInstruction3":"Examples: \\"If the user is logged in\\" then perform checkout actions, else show login form.","loopTooltip":"While loops repeat a set of actions as long as a condition is true. Examples: \\"While there are more pages\\" click next and extract data, \\"While the loading spinner is visible\\" wait. Use for pagination, polling for changes, or processing lists of unknown length. Include a maximum iteration limit to prevent infinite loops. (Ctrl+Alt+L)","loopInstruction1":"While loops repeat a set of actions as long as a condition is true.","loopInstruction2":"The condition is checked before each iteration.","loopInstruction3":"Examples: \\"While there are more pages\\" click next and extract data, \\"While the loading spinner is visible\\" wait."},"stepStatement":{"groupActions":"Group Actions","clearAll":"Clear All","clearAllTooltip":"Remove all statements from this step container. This action cannot be undone.","clearAllItem1":"Remove all statements from this step container.","clearAllItem2":"This action cannot be undone.","saveAsTemplateTooltip":"Save this group as a template that can be reused in other test cases.","saveAsTemplateItem1":"Save this group as a template.","saveAsTemplateItem2":"The template can be used in other test cases.","saveAsTemplateItem3":"Current group will be converted to reference the new template."},"createForm":{"titleLabel":"Title","titlePlaceholder":"Enter test case title","showLess":"Show Less","showMore":"Show More","startingUrlLabel":"Starting URL","testAccountLabel":"Test Account","disableAutoLogin":"Disable auto login","targetPlatformLabel":"Target Platform and Device","selectSpecificDevice":"Select specific device","loadingDevices":"Loading devices...","selectAndroidDevice":"Select Android device","iosComingSoon":"iOS device selection coming soon","nativeMobileTesting":"Native mobile app testing via Appium","deviceOptimized":"Test will be optimized for the selected device viewport and characteristics","folderLabel":"Folder","folderOptional":"(optional)","folderPlaceholder":"Select a folder (leave empty for root)","folderHint":"Test case will be created in the selected folder","testCreationMode":"Test Creation Mode","aiGenerate":"AI Generate","aiGenerateDescription":"AI automatically generates test cases","aiImport":"AI Import","aiImportDescription":"Import test cases via YAML upload","single":"Single","batch":"Batch","goalLabel":"Goal","goalOptional":"(optional)","goalPlaceholder":"Describe what you want to test. For example: 'Login to the application and verify the dashboard is displayed'. Or Leave empty to use the no-code editor...","goalHint":"With a goal, AI generates test steps automatically. Without a goal, use the agentic no-code editor to build steps.","testFlowYamlLabel":"Test Flow YAML","testFlowYamlRequired":"(required)","testFlowYamlHint":"Paste exported test case YAML. AI will import and structure the test flow automatically.","testFlowYamlPlaceholder":"Paste exported test case YAML. For example:\\n\\ngoal: Verify user can log in and see dashboard\\nurl: https://example.com\\nstatements:\\n - Navigate to https://example.com/login\\n - Enter \\"test@example.com\\" in the email field\\n - Enter \\"Password123!\\" in the password field\\n - Click the \\"Sign in\\" button\\n - VERIFY: Dashboard is visible\\n\\nOr paste a full exported YAML from an existing test case.","yamlRequired":"Please upload a valid YAML file with test cases","testFlowYamlContentRequired":"Test flow YAML is required","csvRequired":"Please upload a valid CSV file with test cases","modifyTest":"Modify Test","saveTestCase":"Save Test Case","createWithCopilot":"Create with Copilot","creating":"Creating...","creatingCount":"Creating {count} Test Cases...","createCount":"Create {count} Test Cases","createTestCases":"Create Test Cases","createTestCase":"Create Test Case","createNewTestCase":"Create New Test Case","failedToCreateTestCase":"Failed to create test case","retryParamsUnavailable":"Cannot retry: upload parameters not available","generatingTestCases":"Generating test cases...","generatingTestCasesSubText":"Please wait while we generate your test cases. You will be redirected to the test cases list when complete."},"createCodeForm":{"createNewTestCase":"Create New Test Case","agentMode":"Agent Mode","titleLabel":"Title","titlePlaceholder":"Enter test case title","testAccountLabel":"Test Account","setupTest":"Setup Test","teardownTest":"Teardown Test","saveTestCase":"Save Test Case"},"generalSettings":{"settingsTitle":"Settings","disableAutoLogin":"Disable Auto Login","disableAutoLoginTooltip":"When enabled, the test will not automatically log in using the selected environment.","autoDismissModal":"Auto Dismiss Modal","autoDismissModalTooltip":"When enabled, the test will automatically dismiss modals (like cookie consent) during self-healing.","autoFix":"Auto Fix","autoFixTooltip":"Override the organization default for this test case. When enabled, AI will automatically analyze and fix test failures.","autoFixDefault":"Default ({state})","autoFixOn":"On","autoFixOff":"Off","autoFixStateOn":"On","autoFixStateOff":"Off","targetDevice":"Target Device","browserLocale":"Browser Locale","browserLocaleTooltip":"Override the browser's language and timezone for this test. Leave blank to use the browser default.","language":"Language","languagePlaceholder":"Default (en-US)","timezone":"Timezone","timezonePlaceholder":"Default (America/Los_Angeles)","browserMedia":"Browser Media","browserMediaTooltip":"Enables fake camera/microphone + auto-accept media prompts for Chromium. Other browsers ignore these settings.","enableCamera":"Enable Camera","enableMicrophone":"Enable Microphone","fileIdNameNotLoaded":"FILE-{id} (name not loaded)","selectAudioFile":"Select audio file for microphone","audioFileHint":"Audio file from test data to use for fake microphone capture","selectAudioFileModalTitle":"Select Audio File for Microphone","noAudioFiles":"No audio files (.wav or .mp3) found in test data. Upload audio files to use them as microphone input.","browserExtension":"Browser Extension","browserExtensionTooltip":"Loads a Chrome extension from test data (.crx or .zip). Only supported in Chromium and headed mode.","enableExtension":"Enable Extension","selectExtensionFile":"Select extension file","extensionFileHint":"Extension package from test data (.crx or .zip)","selectExtensionFileModalTitle":"Select Extension File","noExtensionFiles":"No extension files (.crx or .zip) found in test data. Upload an extension package to use it.","extraHeaders":"Extra HTTP Headers","extraHeadersTooltip":"Add custom HTTP headers sent with every browser request (e.g., authorization tokens, feature flags). Headers are sent in plain text.","extraHeadersAddButton":"Add Header","extraHeadersNamePlaceholder":"Header name","extraHeadersValuePlaceholder":"Header value","extraHeadersColumnName":"Name","extraHeadersColumnValue":"Value","extraHeadersNameRequired":"Header name is required","extraHeadersNameInvalid":"Invalid header name — use letters, digits, hyphens, or underscores only","extraHeadersNameDuplicate":"Header name already exists","environmentConfigurations":"Environment Configurations"},"environmentSelection":{"environment":"Environment","overrideUrl":"Override URL (Optional)","overrideUrlDefaultPrefix":"Default: {url}","overrideUrlPlaceholder":"Enter custom URL","overrideTestAccount":"Override Test Account (Optional)","overrideTestAccountDescription":"By default, the test account configured for each test case's environment will be used","overrideVariables":"Override Variables (Optional)","overrideVariablesDescription":"Variables defined here will override environment variables for this run","accountsSelectedInfo":"{count} accounts selected. Each account will run separately, creating {count} test run{plural} per test case.","addVariable":"Add Variable","keyPlaceholder":"Key","valuePlaceholder":"Value","removeVariable":"Remove variable"},"environmentConfigsList":{"unknownEnvironment":"Unknown Environment","notConfigured":"Not configured","specificAccountsNoneSelected":"Specific accounts (none selected)","unknown":"Unknown","testEditorEnvironmentTooltip":"This environment is used as the default when editing the test steps.","testEditorEnvironment":"Test Editor Environment","setAsStepEditorEnv":"Set as Step Editor Env","startingUrl":"Starting URL","testAccount":"Test Account","hooks":"Hooks","addEnvironmentConfig":"Add Environment Config","allEnvironmentsConfigured":"All environments have been configured","editEnvironmentConfig":"Edit Environment Config","updateConfig":"Update Config","addConfig":"Add Config"},"explorer":{"loadingTestCases":"Loading test cases","loadingSubText":"This won't take long","emptyTitle":"Tests","emptyDescription1":"Tests are automated checks that validate how your product works, from login flows to complex user journeys.","emptyDescription2":"Each test is a sequence of actions and verifications, powered by AI or written step by step, so you can catch issues before users do.","createFirstTest":"Create your first test","documentation":"Documentation","newRootFolder":"New Root Folder","columnName":"Name","columnStatus":"Status","columnPlatform":"Platform","columnLatestResult":"Latest Result","columnCreatedBy":"Created By","filterStatus":"Status","filterLabels":"Labels","filterCreatedBy":"Created By","filterDevice":"Device","filterEnvironment":"Environment","filterTestAccount":"Test Account","filterTestAccountDescription":"Shows test cases where at least one environment config includes the selected test account.","filterLatestResult":"Latest Result","filterHasAutoFix":"Auto Fix","filterOptionActive":"Active","filterOptionDraft":"Draft","filterOptionPassed":"Passed","filterOptionFailed":"Failed","filterOptionNotStarted":"Not Started","filterOptionHasAutoFix":"Has Auto Fix","filterActive":"Filter Active","filterAutoFix":"Filter Auto Fix","filterDraft":"Filter Draft","filterFailed":"Filter Failed","filterNotStarted":"Filter Not Started","filterPassed":"Filter Passed"},"filterBar":{"statusDisplay":"Status","labelsDisplay":"Labels","statusMore":"{first} + {count} more","labelMore":"{first} + {count} more","devicesPlaceholder":"Devices","clearAllFilters":"Clear all filters","clearShort":"Clear","filterActive":"Filter Active","filterDraft":"Filter Draft"},"liveView":{"liveViewTab":"Live View","videoTab":"Video","previewsTab":"Previews","previewsWithCount":"Previews ({count})","deviceTooltip":"Device: {name}","reload":"Reload","reloading":"Reloading...","exitFullScreen":"Exit full screen","fullScreen":"Full screen","liveViewNotAvailable":"Live View Not Available","liveViewNotAvailableDesc":"Live test preview is not available in Code mode. Switch to Agent mode in Settings to use this feature.","testLiveView":"Test Live View","waitingForGeneration":"Waiting for generation to start...","initializingDebug":"Initializing debug session...","clickToStart":"Click the \\"Start\\" or \\"Run\\" button in the left panel to start the browser and see automation in real-time.","noVideoRecording":"No video recording available","generationScreenshot":"Generation screenshot","waitingForScreenshot":"Waiting for generation screenshot...","livePreviewTitle":"Live Preview Title"},"userSelection":{"noneOption":"None","anyOption":"Any","unknownAccount":"Unknown account","selectedAccounts":"{count} selected accounts","searchPlaceholder":"Search accounts...","createdLabel":"Created: {date}"},"viewRecordingModal":{"title":"Test Recording: {title}","noRecordingAvailable":"No recording available for this test case","failedToLoad":"Failed to load recording","noVideoRecording":"No video recording available","browserNotSupported":"Your browser does not support the video tag."},"simpleList":{"searchPlaceholder":"Search test cases...","columnId":"ID","columnName":"Name","columnUpdated":"Updated"},"sidebar":{"testCaseInfo":"Test Case Info","createdAt":"Created At","lastUpdated":"Last Updated","createdBy":"Created By","updatedBy":"Updated By","targetDevice":"Target Device","actions":"Actions","extractKnowledge":"Extract Knowledge","extractingKnowledge":"Extracting Knowledge...","knowledgeExtractedMessage":"Knowledge has been successfully extracted from this test case","failedToExtractKnowledge":"Failed to extract knowledge","failedToExtractKnowledgeFromTestCase":"Failed to extract knowledge from test case","notAvailable":"N/A"},"statementChanges":{"added":"Added ({count})","deleted":"Deleted ({count})","modified":"Modified ({count})","moved":"Moved ({count})"},"assertions":{"placeholder":"Enter assertion description...","emptyText":"Click to add assertion"},"basicAction":{"placeholder":"Enter action description...","emptyText":"Click to add description","findElement":"Find element"},"infoView":{"variablesTab":"Variables","consoleTab":"Logs","noVariables":"No variables available. Start running your test to see variables here.","noConsoleOutput":"No log output available. Logs will appear here during test execution.","clickToExpand":"Click to expand","dragToResize":"Drag to resize","configTab":"Config","noConfig":"No configuration available. Select a test file to see its configuration."},"resultPopup":{"latestRunResult":"Latest Run Result","status":"Status:","started":"Started:","ended":"Ended:","duration":"Duration:","environment":"Environment:","summary":"Summary:","notStarted":"Not Started","passedWithAutofix":"Passed with autofix"},"testDataSelector":{"selectTestData":"Select Test Data","needToUpload":"Need to upload test data files?","goToSettings":"Go to Settings → Test Data","selectTestDataModalTitle":"Select Test Data","confirmUploadTitle":"Confirm Upload Test Data","confirmUploadDesc":"Upload file {filename} and attach to the test.","done":"Done","cancel":"Cancel","confirm":"Confirm"},"testDataSelectionList":{"searchPlaceholder":"Search test data file name...","columnId":"ID","columnName":"Name","columnLastUpdated":"Last Updated","done":"Done"},"templateSelector":{"placeholder":"Select a template"},"simpleExplorer":{"searchPlaceholder":"Search test cases...","loadingTestCases":"Loading test cases...","selectedCount":"{count} selected","columnName":"Name","columnStatus":"Status","columnCreatedBy":"Created By"},"layout":{"overviewTab":"Overview","settingsTab":"Settings","historyTab":"History","runRecordsTab":"Run Records","codeTab":"Code","playgroundTab":"UX Playground","autofixAvailable":"An autofix is available for this test case.","viewResult":"View result","closeDetails":"Close details"},"runRecordsTab":{"loadError":"Failed to load run records. Please try again.","empty":"No run records yet","emptyHint":"Run records will appear here after the test case has been executed.","columnRunId":"Run ID","columnResult":"Result","columnStarted":"Started","columnDuration":"Duration","columnEnvironment":"Environment","paginationInfo":"{total} records · Page {page} of {totalPages}"},"diffViewer":{"modalTitle":"Test Flow Changes"},"flowEditor":{"teardownTitle":"Teardown","removeTeardown":"Remove","addTeardown":"Add Teardown"},"plansSection":{"schedulesTitle":"Schedules","noSchedulesLinked":"No schedules linked","viaSuiteBadge":"Via Suite"},"suitesSection":{"testSuitesTitle":"Test Suites","noTestSuitesLinked":"No test suites linked"},"csvSection":{"uploadCsvFile":"Upload CSV File","downloadTemplate":"Download Template","selectCsvFile":"Select CSV file","csvFormatTitle":"CSV Format Requirements","formatDescription":"Your CSV file must contain \\"title\\" and \\"goal\\" columns. The goal column should contain a description of what you want to test. AI will automatically generate test steps based on each goal. Click \\"Download Template\\" above to get a sample file with the correct format.","exampleFormat":"Example format (use quotes for fields containing commas or newlines):","exampleCsv":"title,goal\\nLogin Test,\\"Test login with valid credentials\\"\\nCheckout Test,\\"Test checkout process with multiple items\\"","tipCommasAndNewlines":"Tip: Handling commas and newlines: Wrap fields containing commas or newlines in double quotes","tipIncludingQuotes":"Tip: Including quotes: Use double quotes (\\"\\") to include actual quotes in text","tipGoalFormat":"Tip: Goal format: Provide a clear description of what you want to test (e.g., \\"Test login functionality\\" or \\"Verify checkout process\\")","parsingCsv":"Parsing CSV file...","previewCount":"Preview ({count} test case{plural})","columnTitle":"Title","columnGoal":"Goal","columnTestFlow":"Test Flow","errors":{"fileTooLarge":"File size too large. Please upload a file smaller than 5MB","emptyFile":"CSV file is empty. Please upload a file with test case data","missingHeaderOrData":"CSV file must contain at least a header row and one data row. Please check your file format","missingRequiredColumns":"CSV file must contain \\"title\\" and \\"goal\\" columns. Found columns: {columns}","rowMissingRequiredColumns":"Row {row}: Missing required columns (expected at least {minColumns} columns)","rowMissingTitle":"Row {row}: Missing title","rowMissingGoal":"Row {row}: Missing goal","rowTitleTooLong":"Row {row}: Title too long (max 200 characters)","rowGoalTooLong":"Row {row}: Goal too long (max 2000 characters)","noValidRowsWithDetails":"No valid test cases found. Errors:\\n{errors}{more}","noValidRows":"No valid test cases found in CSV file. Please check your file format","tooManyRows":"Too many test cases. Please limit to 100 test cases per upload","parseFailed":"Failed to parse CSV file. Please check the file format and try again","readFailed":"Failed to read CSV file. Please try again or use a different file","invalidExtension":"Please upload a CSV file"}},"yamlSection":{"uploadYamlFile":"Upload YAML File","downloadTemplate":"Download Template","selectYamlFile":"Select YAML file (.yaml or .yml)","yamlFormatTitle":"YAML Format Requirements","parsingYaml":"Parsing YAML file...","previewCount":"Preview ({count} test case{plural})","columnTitle":"Title","columnGoal":"Goal"},"screencast":{"connecting":"Connecting to screencast...","failedToConnect":"Failed to connect to screencast","disconnected":"Screencast disconnected","browserScreencast":"Browser Screencast"},"multiPageViewer":{"noPagesOpen":"No pages open","connectingToBrowser":"Connecting to browser...","closeInspector":"Close Inspector","openInspector":"Open Inspector","pickingLocator":"Picking locator...","cancelLocatorPicking":"Cancel locator picking","failedToConstructUrl":"Failed to construct DevTools URL","recording":"Recording","record":"Record","clickToStopRecording":"Click to Stop Recording","clickToStartRecording":"Click to Start Recording","picking":"Picking","pick":"Pick","clickToStopPicking":"Click to Stop Picking Element","clickToStartPicking":"Click to Start Picking Element"},"agentFixDiffViewer":{"diffSummaryTitle":"Diff Summary","originalTestFlow":"Original Test Flow","agentFixedTestFlow":"Agent-Fixed Test Flow","changedCount":"{count} changed","statementsCount":"{count} statements","changeLabel":"Change","noChanges":"No changes","noStatements":"No statements to display","changeDetails":"Change Details","deletedInModified":"Deleted in modified","addedInModified":"Added in modified"},"videoPreview":{"creatingTestCase":"Creating Test Case","recordingWillAppearSoon":"Test recording will appear here shortly","testRecordingPreview":"Test Recording Preview","recordingWillAppear":"Test recording will appear here","browserNotSupported":"Your browser does not support the video tag."},"imageViewer":{"noImagesAvailable":"No Images Available","noImagesDesc":"Images will appear here when available from test execution or debugging."},"actionGenerationDebugView":{"tabSystemPrompt":"System Prompt","tabUserPrompt":"User Prompt","tabReasoningContent":"Reasoning Content","tabRawResponse":"Raw Response","tabKnowledge":"Knowledge ({count})","tabCuaInput":"CUA Input","tabCuaResponse":"CUA Response"},"labels":{"labelsTitle":"Labels"},"csvImportProgress":{"backgroundInfo":"You can close this window at any time. The import process will continue in the background.","columnTitle":"Title","columnStatus":"Status","statusPending":"Pending","statusCreating":"Creating","statusGenerating":"Generating","statusCompleted":"Completed","statusError":"Error","goToTestCases":"Go To Test Cases"},"historyViewer":{"title":"Test Flow History Version","updatedAt":"{name} updated at {timeAgo}"},"generationView":{"queued":"Queued","regenerating":"({count})Regenerating a better test","generating":"Generating"}}`);
|
|
200672
201500
|
const TestSuites = { "exportingTitle": "Exporting Test Suite", "exportedSuccessfully": "Test suite exported successfully", "failedToExport": "Failed to export test suite", "urlCopied": "Test suite URL copied to clipboard", "failedToCopyUrl": "Failed to copy URL", "createdSuccessfully": "Test suite created successfully", "failedToCreate": "Failed to create test suite", "failedToUpdateTitle": "Failed to update test suite title", "deleteTitle": "Delete test suite?", "properties": "Properties", "copyTestSuiteUrl": "Copy test suite URL", "totalTests": "Total Tests", "activeTests": "Active Tests", "inactiveTests": "Inactive Tests", "lastRun": "Last Run", "never": "Never", "selectedCount": "{count} selected", "latestRun": "Latest Run", "viewRunDetails": "View run details", "result": "Result", "startTime": "Start Time", "endTime": "End Time", "duration": "Duration", "totalPassed": "Total Passed", "totalFailed": "Total Failed", "invalidDate": "Invalid date", "notAvailable": "N/A", "testSuiteTitle": "Test Suite Title", "enterTestSuiteTitle": "Enter test suite title", "description": "Description", "enterTestSuiteDescription": "Enter a description for the test suite", "addTestCases": "Add Test Cases", "testCases": "Test Cases", "selectTestCasesToAddToSuite": "Select test cases to add to this test suite", "addSelectedWithCount": "Add Selected ({count})", "suiteId": "SUITE ID", "title": "Title", "latestResult": "Latest Result", "createdBy": "Created By", "testsCount": "{count} tests", "testsFailedCount": "{count} {count, plural, one {Test} other {Tests}} Failed", "notStarted": "Not Started", "runTestSuite": "Run Test Suite", "deleteSelected": "Delete Selected", "testSuitesTitle": "Test Suites", "emptyDescriptionLine1": "Test Suites let you group related test cases together, so you can run, track, and manage them as a single unit.", "emptyDescriptionLine2": "Use suites to organize tests by feature, workflow, or release, and easily include them in schedules for regular automated runs.", "createFirstTestSuite": "Create your first test suite", "documentation": "Documentation", "testSuiteSingular": "test suite", "removeFromSuite": "Remove from suite", "githubActionsIntegration": "GitHub Actions Integration", "githubActionsIntegrationDescription": "Configure your GitHub workflow to automatically run this test suite. When a run completes, notifications will be sent to the channels configured below.", "viewSetupGuide": "View setup guide", "slackNotifications": "Slack Notifications", "suiteSlackNotificationsDescription": "Receive test results in Slack channels when this test suite is run via GitHub Actions. Select which test outcomes trigger notifications.", "receiveResultsInSlackChannels": "Receive test results in Slack channels,", "oneTimeSetup": "one-time setup", "requiredSuffix": "required.", "addNewChannels": "Add new channels", "webhookNotifications": "Webhook Notifications", "suiteWebhookNotificationsDescription": "Send test results to webhook endpoints when this test suite is run via GitHub Actions. Configure integrations with external systems.", "sendResultsToWebhookEndpoints": "Send test results to webhook endpoints,", "manageWebhookEndpoints": "Manage webhook endpoints", "testSuiteDetails": "Test Suite Details", "created": "Created", "lastUpdated": "Last Updated", "byUser": "by {user}", "latestRunResult": "Latest Run Result", "viewDetails": "View Details", "passed": "Passed", "failed": "Failed", "successRate": "Success Rate", "noTestRunsYet": "No test runs yet. Run this test suite to see results here.", "createTestSuite": "Create Test Suite", "selectTestCasesToIncludeInSuite": "Select test cases to include in this test suite", "latest": "Latest", "untitledTestSuite": "Untitled Test Suite", "failedToLoadTestSuites": "Failed to load test suites", "failedToLoadTestCases": "Failed to load test cases", "testSuiteDeletedSuccessfully": "Test suite deleted successfully", "failedToDeleteTestSuite": "Failed to delete test suite", "testSuitesDeletedSuccessfully": "{count, plural, one {1 test suite deleted successfully} other {{count} test suites deleted successfully}}", "failedToDeleteSomeTestSuites": "Failed to delete some test suites", "deleteTestSuiteTitle": "Delete Test Suite", "deleteTestSuiteConfirmMessage": "Are you sure you want to delete this test suite? This action cannot be undone.", "deleteMultipleTestSuitesTitle": "Delete Multiple Test Suites", "deleteMultipleTestSuitesConfirmMessage": "Are you sure you want to delete {count} {count, plural, one {test suite} other {test suites}}? This action cannot be undone.", "failedToLoadTestSuiteData": "Failed to load test suite data", "returnToTestSuites": "Return to Test Suites", "removeSelectedTestsTitle": "Remove Selected Tests", "removeSelectedTestsConfirm": "Are you sure you want to remove selected tests from the suite? This action cannot be undone.", "remove": "Remove", "removeSelectedCount": "Remove Selected ({count})", "tabs": { "overview": "Overview", "ciAndNotifications": "CI & Notifications" } };
|
|
200673
201501
|
const Schedules = { "scheduleUpdatedTitle": "Schedule Updated", "scheduleUpdatedMessage": "Schedule has been updated successfully", "updateFailedTitle": "Update Failed", "createdSuccessfully": "Schedule created successfully", "failedToCreate": "Failed to create schedule. Please try again.", "titleRequired": "Please enter a title", "switchedToTestsSuitesMode": "Switched to Tests & Suites mode", "viewUpdatedSuccessfully": "View updated successfully", "failedToUpdate": "Failed to update", "scheduleStatusUpdated": "Schedule status updated", "failedToUpdateScheduleStatus": "Failed to update schedule status", "failedToSaveParameterSets": "Failed to save parameter sets", "failedToUpdateDefaultParameterSet": "Failed to update default parameter set", "failedToSaveDefaultVariables": "Failed to save default variables", "webhookEndpointDisabled": "This endpoint is disabled globally in Settings/Notifications", "environmentMismatchTooltip": "The environment of this schedule does not match some of its test cases.", "totalTestsCount": "{count} Total {count, plural, one {Test} other {Tests}}", "viewWithId": "View #{id}", "suiteCount": "{count} {count, plural, one {Suite} other {Suites}}", "scheduleMustBeActiveToRunInCloud": "Schedule must be Active to run in cloud", "runInCloud": "Run in Cloud", "properties": "Properties", "copyScheduleUrl": "Copy schedule URL", "created": "Created", "notAvailable": "N/A", "lastUpdated": "Last Updated", "description": "Description", "addScheduleDescription": "Add a schedule description...", "saving": "Saving...", "saved": "Saved", "failedToSave": "Failed to save", "addTestCases": "Add Test Cases", "loadingTestCases": "Loading test cases", "testCaseSelectedCount": "{count} {count, plural, one {test case} other {test cases}} selected", "addSelected": "Add Selected", "addTestSuites": "Add Test Suites", "testSuiteSelectedCount": "{count} {count, plural, one {test suite} other {test suites}} selected", "status": "Status", "changeStatus": "Change Status", "schedule": "Schedule", "schedId": "SCHED ID", "name": "Name", "totalTests": "Total Tests", "type": "Type", "environment": "Environment", "createdBy": "Created By", "testsCount": "{count} tests", "viewBased": "View Based", "manualSelection": "Manual Selection", "noUrlAvailable": "No URL available", "testPlanMustBeActiveToRun": "Test Plan must be Active to run", "deleteSchedulesTitle": "Delete {count} {count, plural, one {schedule} other {schedules}}?", "confirmDeleteSchedules": "Are you sure you want to delete {target}? This action cannot be undone.", "thisSchedule": "this schedule", "theseSchedules": "these schedules", "schedulesDeletedSuccessfully": "{count, plural, one {Schedule deleted successfully} other {Schedules deleted successfully}}", "failedToDeleteSchedules": "{count, plural, one {Failed to delete schedule} other {Failed to delete schedules}}", "deleteSelected": "Delete Selected", "deleteFailedTitle": "Failed to Delete Schedule", "unexpectedError": "An error occurred", "schedulesTitle": "Schedules", "emptyDescriptionLine1": "Schedules run your tests automatically on a recurring basis, so you can catch issues without manual runs.", "emptyDescriptionLine2": "A schedule can include individual tests or test suites and runs them in a selected environment at a set time.", "createFirstSchedule": "Create your first schedule", "documentation": "Documentation", "scheduleSingular": "schedule", "emailNotifications": "Email Notifications", "emailNotificationsDescription": "Send scheduled test results to email addresses when tests run on schedule. Select organization members or add custom email addresses.", "slackNotifications": "Slack Notifications", "slackNotificationsDescription": "Send scheduled test results to Slack channels when tests run on schedule. Select channels to receive notifications.", "receiveResultsInSlackChannels": "Receive test results in Slack channels,", "requiredSuffix": "required.", "addNewChannels": "Add new channels", "webhookNotifications": "Webhook Notifications", "webhookNotificationsDescription": "Send scheduled test results to webhook endpoints when tests run on schedule. Configure custom integrations with external systems.", "sendResultsToWebhookEndpoints": "Send test results to webhook endpoints,", "manageWebhookEndpoints": "Manage webhook endpoints", "addEmails": "Add emails", "receiveResultsInSelectedSlackChannels": "Receive test results in selected Slack channels.", "oneTimeSetup": "one-time setup", "emailAddressRequired": "Email address is required", "invalidEmailAddress": "Invalid email address", "emailAlreadyAdded": "This email is already added", "enterEmailAddress": "Enter email address", "add": "Add", "organizationMembersSubscribed": "Organization Members ({subscribed}/{total} subscribed)", "environmentMismatch": "Environment mismatch", "clickToEditParameterSets": "Click to edit parameter sets", "default": "Default", "parameterSetsCount": "{count} sets", "enabledParameterSetsCount": "{enabled} / {total} sets", "parameterSets": "Parameter Sets", "removeFromPlan": "Remove from Plan", "removeSelectedCount": "Remove Selected ({count})", "searchTestCases": "Search test cases...", "searchTestSuites": "Search test suites...", "removeTestCase": "Remove Test Case", "removeTestSuite": "Remove Test Suite", "removeFromScheduleConfirm": "Are you sure you want to remove this {itemType} from the schedule? This action cannot be undone.", "testCaseLower": "test case", "testSuiteLower": "test suite", "remove": "Remove", "parameterSetsTitle": "Parameter Sets - {title}", "failedToLoadTestCases": "Failed to load test cases", "selectEnvironment": "Select an environment", "overrideTestAccountOptional": "Override Test Account (Optional)", "overrideTestAccountDescription": "By default, the test account configured for each test case's environment will be used", "preflightTestOptional": "Preflight Test (Optional)", "preflightTestDescription": "Run this test case before dispatching main tests in this schedule.", "selectPreflightTestCase": "Select preflight test case", "clearPreflightTestCase": "Clear preflight test case", "startDateOptional": "Start Date (Optional)", "pickDateAndTime": "Pick date and time", "endDateOptional": "End Date (Optional)", "repeat": "Repeat", "cronTimezoneNotice": "Cron schedules are saved/executed in UTC. Your browser timezone is {browserTz}{browserTzAbbr} {browserOffset}.", "oneTestCaseSelected": "1 test case selected", "noTestCaseSelected": "No test case selected", "maxParallelRuns": "Max Parallel Runs", "maxParallelRunsDescription": "Limit how many tests run at the same time. When a test finishes, the next queued test starts automatically. Leave empty for no limit.", "maxParallelRunsPlaceholder": "No limit", "saveSchedule": "Save Schedule", "title": "Title", "enterScheduleTitle": "Enter schedule title", "enterScheduleDescription": "Enter schedule description", "testCasesCount": "Test Cases ({count})", "testSuitesCount": "Test Suites ({count})", "viewCount": "View ({count})", "viewSelectionMutuallyExclusive": "Selecting a view is mutually exclusive with test cases and suites - choosing one will clear the other.", "noPublicViewsAvailable": "No public views available. Create a public view first to use view-based schedules.", "searchViews": "Search views...", "viewWithName": "View: {name}", "itemsSelectedCount": "{count} {count, plural, one {item} other {items}} selected", "scheduleConfigured": "Schedule configured", "noScheduleSet": "No schedule set", "createSchedule": "Create Schedule", "basicInfo": "Basic Info", "enterDetails": "Enter details", "testSelection": "Test Selection", "selectTestsOrView": "Select tests or a view", "setUpExecutionSchedule": "Set up execution schedule", "creatingSchedule": "Creating schedule", "thisWontTakeLong": "This won't take long", "changeTestSource": "Change test source", "useAView": "Use a View", "useTestsAndSuites": "Use Tests & Suites", "switchToManualDescription": "Switch to manually managing test cases and suites. The current view association will be removed.", "testSource": "Test source", "testsResolvedCount": "({count} {count, plural, one {test} other {tests}} resolved)", "testsAndSuites": "Tests & Suites", "testSuites": "Test Suites", "start": "Start", "end": "End", "from": "From", "to": "To", "untitledTestPlan": "Untitled Test Plan", "flakyTestRate": "Flaky Test Rate", "averageDurations": "Average Durations", "allTimeStats": "All-time Stats", "latestRunResult": "Latest Run Result", "report": { "failedToLoadReportData": "Failed to load report data", "loadingReport": "Loading report", "fetchingTestRunData": "Fetching test run data and history...", "noTestRunsExecuted": "No test runs have been executed for this test plan yet.", "latestRunDescription": "Most recent test results with pass/fail distribution.", "flakyDescription": "Tests that initially failed but succeeded on retry.", "averageDurationDescription": "Test execution time metrics for test cases.", "allTimeDescription": "A high pass rate shows test stability, a low rate suggests issues.", "casesLabel": "{count} Cases", "testsLabel": "{count} Tests", "percentPassed": "{rate}% Passed", "percentFlaky": "{rate}% Flaky", "runNumber": "Run #{id}", "startedAt": "Started: {time}", "endedAt": "Ended: {time}", "durationWithValue": "Duration: {value}", "viewRunDetails": "View Run Details", "stable": "Stable", "flaky": "Flaky", "passed": "Passed", "failed": "Failed", "caseDuration": "Case Duration", "planDuration": "Plan Duration", "totalDuration": "Total Duration", "durationSeconds": "Duration (s)", "runResultsTrendTitle": "Run Results Trend Over Time", "runResultsTrendDescription": "Tracks pass/fail rates across {count} test runs. Growing red areas may indicate increasing flakiness, while consistent green shows test stability.", "testCaseHistory": "Test Case History", "flakyDefinitionPrefix": "A ", "flakyDefinitionSuffix": " test is one that initially fails but succeeds when retried in the same run. It indicates potential instability that should be addressed." }, "detailPage": { "loadingSchedule": "Loading schedule", "fetchingScheduleDetails": "Fetching schedule details...", "scheduleNotFound": "Schedule not found", "returnToSchedules": "Return to Schedules", "tabs": { "overview": "Overview", "tests": "Tests", "report": "Report", "notifications": "Notifications", "history": "History" } } };
|
|
200674
201502
|
const Functions = { "definitionTitle": "Definition", "reloadingFunctions": "Reloading Functions...", "tryItOutTitle": "Try it out", "reset": "Reset", "run": "Run", "changeStatus": "Change Status", "tabs": { "overview": "Overview", "usage": "Usage", "settings": "Settings", "editor": "Editor", "preview": "Preview", "dragToResize": "Drag to resize", "clickToExpand": "Click to expand", "clickToCollapse": "Click to collapse" }, "header": { "editFunctionTitle": "Edit {name} function" }, "createModal": { "title": "Create New Function", "nameLabel": "Name of function", "namePlaceholder": "my_function", "descriptionLabel": "Description", "descriptionPlaceholder": "Describe what this function does and how it should be used", "argumentsLabel": "Arguments", "argumentPlaceholder": "argumentName", "addNewArgument": "+ Add a new argument", "removeArgumentAriaLabel": "Remove argument", "creating": "Creating...", "functionNameRequired": "Function name is required", "functionNameSnakeCaseError": "Function name must use snake_case format: only lowercase letters, numbers, and underscores. No uppercase, hyphens, or spaces allowed.", "provideValidFunctionName": "Please provide a valid function name" }, "codeEditor": { "functionSignature": "Function Signature", "nameLabel": "Name:", "namePlaceholder": "my_function", "descriptionLabel": "Description:", "descriptionPlaceholder": "Function description", "parametersLabel": "Parameters:", "parameterPlaceholder": "param_name", "addParameter": "Add", "removeParameterAriaLabel": "Remove Parameter", "functionNameRequired": "Function name is required", "functionNameSnakeCaseError": "Use snake_case format: lowercase letters, numbers and underscores only" }, "list": { "funcId": "FUNC ID", "name": "Name", "description": "Description", "usedBy": "Used By", "status": "Status", "createdBy": "Created By", "created": "Created", "updated": "Updated", "deleteSelected": "Delete Selected", "deleteConfirmTitle": "Delete {count, plural, one {function} other {functions}}?", "deleteConfirmMessage": "Are you sure you want to delete {count} {count, plural, one {function} other {functions}}? This action cannot be undone.", "recordLabelFunction": "function" }, "emptyState": { "title": "Functions", "descriptionLine1": "Functions are reusable building blocks you can call from any test, from API requests to multi step workflows and data processing.", "descriptionLine2": "Write them once, use them everywhere. Functions run with full Playwright access and can store results in the test context, so your tests stay clean and consistent.", "createFirstFunction": "Create your first function", "documentation": "Documentation" }, "usageTab": { "id": "ID", "title": "Title", "recordLabelTestCase": "test case" }, "settings": { "pathMustStartWithSlash": "Path must start with /", "loadingFunctionDetails": "Loading function details...", "tryItOutSettings": "Try it out Settings", "disableAutoLogin": "Disable Auto Login", "environmentAndUrl": "Environment & URL", "testAccount": "Test Account" }, "createdSuccessfully": "Function created successfully", "failedToSave": "Failed to save function. Please try again.", "failedToLoadTestAccounts": "Failed to load test accounts", "settingsSavedSuccessfully": "Settings saved successfully", "failedToSaveSettings": "Failed to save settings", "page": { "deleteFunctionTitle": "Delete function?", "deleteFunctionConfirmMessage": "Are you sure you want to delete this function? This action cannot be undone.", "delete": "Delete", "cancel": "Cancel", "functionDeletedSuccessfully": "Function deleted successfully", "failedToDeleteFunction": "Failed to delete function", "functionNotFound": "Function not found", "copyName": "{name} (Copy)", "functionDuplicatedAs": 'Function duplicated as "{name} (Copy)"', "failedToDuplicateFunction": "Failed to duplicate function", "functionStatusUpdated": "Function status updated", "failedToUpdateFunctionStatus": "Failed to update function status", "failedToLoadFunctions": "Failed to load functions", "retry": "Retry", "testFunctionNotFound": "Test function not found", "returnToTestFunctions": "Return to Test Functions" } };
|
|
@@ -200756,4 +201584,4 @@ export {
|
|
|
200756
201584
|
We as W,
|
|
200757
201585
|
reactExports as r
|
|
200758
201586
|
};
|
|
200759
|
-
//# sourceMappingURL=index-
|
|
201587
|
+
//# sourceMappingURL=index-iW9rlkck.js.map
|