shiplightai 0.1.78 → 0.1.80

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.
@@ -11027,7 +11027,7 @@ function useCollapse({
11027
11027
  }
11028
11028
  return getCollapseProps;
11029
11029
  }
11030
- const defaultProps$L = {
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$L, props);
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$K = {
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$K,
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$C = { "root": "m_d57069b5", "viewport": "m_c0783ff9", "viewportInner": "m_f8f631dd", "scrollbar": "m_c44ba933", "thumb": "m_d8b5e363", "corner": "m_21657268", "content": "m_b1336c6" };
15049
- const defaultProps$J = {
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$H = createVarsResolver(
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$J, _props);
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$C,
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$H
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$J, props);
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$C;
15238
+ ScrollArea.classes = classes$E;
15239
15239
  ScrollAreaAutosize.displayName = "@mantine/core/ScrollAreaAutosize";
15240
- ScrollAreaAutosize.classes = classes$C;
15240
+ ScrollAreaAutosize.classes = classes$E;
15241
15241
  ScrollArea.Autosize = ScrollAreaAutosize;
15242
- var classes$B = { "root": "m_87cf2631" };
15243
- const defaultProps$I = {
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$I, _props);
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$B,
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$B;
15283
+ UnstyledButton.classes = classes$D;
15284
15284
  UnstyledButton.displayName = "@mantine/core/UnstyledButton";
15285
- var classes$A = { "root": "m_515a97f8" };
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$A,
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$A;
15302
+ VisuallyHidden.classes = classes$C;
15303
15303
  VisuallyHidden.displayName = "@mantine/core/VisuallyHidden";
15304
- var classes$z = { "root": "m_1b7284a3" };
15305
- const varsResolver$G = createVarsResolver((_, { radius, shadow }) => ({
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$z,
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$G
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$z;
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$y = { "root": "m_9814e45f" };
15494
- const defaultProps$H = {
15493
+ var classes$A = { "root": "m_9814e45f" };
15494
+ const defaultProps$L = {
15495
15495
  zIndex: getDefaultZIndex("modal")
15496
15496
  };
15497
- const varsResolver$F = createVarsResolver(
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$H, _props);
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$y,
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$F
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$y;
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$G = {
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$G, props);
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$x = { "dropdown": "m_38a85659", "arrow": "m_a31dc6c1", "overlay": "m_3d7bc908" };
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$x;
16013
+ PopoverDropdown.classes = classes$z;
16014
16014
  PopoverDropdown.displayName = "@mantine/core/PopoverDropdown";
16015
- const defaultProps$F = {
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$F,
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$E = {
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$E = createVarsResolver((_, { radius, shadow }) => ({
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$E, _props);
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$x,
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$E
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$w = { "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$w.barsLoader, className), ...others, ref, children: [
16447
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$w.bar }),
16448
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$w.bar }),
16449
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$w.bar })
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$w.dotsLoader, className), ...others, ref, children: [
16453
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$w.dot }),
16454
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$w.dot }),
16455
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: classes$w.dot })
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$w.ovalLoader, className), ...others, ref }));
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$D = {
16465
+ const defaultProps$H = {
16466
16466
  loaders: defaultLoaders,
16467
16467
  type: "oval"
16468
16468
  };
16469
- const varsResolver$D = createVarsResolver((theme2, { size: size2, color: color2 }) => ({
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$D, _props);
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$w,
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$D
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$w;
16522
+ Loader.classes = classes$y;
16523
16523
  Loader.displayName = "@mantine/core/Loader";
16524
- var classes$v = { "root": "m_8d3f4000", "icon": "m_8d3afb97", "loader": "m_302b9fb1", "group": "m_1a0f1b21", "groupSection": "m_437b6484" };
16525
- const defaultProps$C = {
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$C = createVarsResolver((_, { borderWidth }) => ({
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$C, _props);
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$C, _props);
16546
+ } = useProps("ActionIconGroup", defaultProps$G, _props);
16547
16547
  const getStyles2 = useStyles({
16548
16548
  name: "ActionIconGroup",
16549
16549
  props,
16550
- classes: classes$v,
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$C,
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$v;
16573
+ ActionIconGroup.classes = classes$x;
16574
16574
  ActionIconGroup.displayName = "@mantine/core/ActionIconGroup";
16575
- const varsResolver$B = createVarsResolver(
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$v,
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$B,
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$v;
16629
+ ActionIconGroupSection.classes = classes$x;
16630
16630
  ActionIconGroupSection.displayName = "@mantine/core/ActionIconGroupSection";
16631
- const varsResolver$A = createVarsResolver(
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$v,
16683
+ classes: classes$x,
16684
16684
  classNames,
16685
16685
  styles: styles2,
16686
16686
  unstyled,
16687
16687
  attributes,
16688
16688
  vars,
16689
- varsResolver: varsResolver$A
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$v;
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$u = { "root": "m_86a44da5", "root--subtle": "m_220c80f2" };
16737
- const defaultProps$B = {
16736
+ var classes$w = { "root": "m_86a44da5", "root--subtle": "m_220c80f2" };
16737
+ const defaultProps$F = {
16738
16738
  variant: "subtle"
16739
16739
  };
16740
- const varsResolver$z = createVarsResolver((_, { size: size2, radius, iconSize }) => ({
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$B, _props);
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$u,
16773
+ classes: classes$w,
16774
16774
  classNames,
16775
16775
  styles: styles2,
16776
16776
  unstyled,
16777
16777
  attributes,
16778
16778
  vars,
16779
- varsResolver: varsResolver$z
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$u;
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$t = { "root": "m_4081bf90" };
16804
- const defaultProps$A = {
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$y = createVarsResolver(
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$A, _props);
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$t,
16855
+ classes: classes$v,
16856
16856
  classNames,
16857
16857
  styles: styles2,
16858
16858
  unstyled,
16859
16859
  attributes,
16860
16860
  vars,
16861
- varsResolver: varsResolver$y
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$t;
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$s = { "title": "m_615af6c9", "header": "m_b5489c3c", "inner": "m_60c222c7", "content": "m_fd1ab0aa", "close": "m_606cb269", "body": "m_5df29311" };
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$s.body]: !ctx.unstyled }, className)
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$s.close]: !ctx.unstyled }, className),
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$s.inner]: !ctx.unstyled }, innerProps.className),
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$s.content]: !ctx.unstyled }, className),
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$s.header]: !ctx.unstyled }, className),
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$s.title]: !ctx.unstyled }, className),
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$r = { "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$x = createVarsResolver((_, { size: size2 }) => ({
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$r,
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$x
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$r;
17267
+ InputDescription.classes = classes$t;
17268
17268
  InputDescription.displayName = "@mantine/core/InputDescription";
17269
- const varsResolver$w = createVarsResolver((_, { size: size2 }) => ({
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$r,
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$w
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$r;
17318
+ InputError.classes = classes$t;
17319
17319
  InputError.displayName = "@mantine/core/InputError";
17320
- const defaultProps$z = {
17320
+ const defaultProps$D = {
17321
17321
  labelElement: "label"
17322
17322
  };
17323
- const varsResolver$v = createVarsResolver((_, { size: size2 }) => ({
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$z, _props);
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$z, props);
17349
+ } = useProps("InputLabel", defaultProps$D, props);
17350
17350
  const _getStyles = useStyles({
17351
17351
  name: ["InputWrapper", __staticSelector],
17352
17352
  props,
17353
- classes: classes$r,
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$v
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$r;
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$r,
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$r;
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$y = {
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$u = createVarsResolver((_, { size: size2 }) => ({
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$y, _props);
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$r,
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$u
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$r;
17592
+ InputWrapper.classes = classes$t;
17593
17593
  InputWrapper.displayName = "@mantine/core/InputWrapper";
17594
- const defaultProps$x = {
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$t = createVarsResolver((_, props, ctx) => ({
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$x, _props);
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$r,
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$t
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$r;
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$w = {
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$w, props);
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$q = { "root": "m_8bffd616" };
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$q,
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$q;
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$p = { "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$s = createVarsResolver(
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$p,
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$s
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$p;
18047
+ Alert.classes = classes$r;
18048
18048
  Alert.displayName = "@mantine/core/Alert";
18049
- var classes$o = { "root": "m_b6d8b162" };
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$v = {
18059
+ const defaultProps$z = {
18060
18060
  inherit: false
18061
18061
  };
18062
- const varsResolver$r = createVarsResolver(
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$v, _props);
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$o,
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$r
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$o;
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$n = { "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$u = {
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$q = createVarsResolver((theme2, { size: size2, color: color2 }) => ({
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$u, _props);
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$n,
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$q,
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$n;
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$n;
18259
+ ComboboxDropdown.classes = classes$p;
18260
18260
  ComboboxDropdown.displayName = "@mantine/core/ComboboxDropdown";
18261
- const defaultProps$t = {
18261
+ const defaultProps$x = {
18262
18262
  refProp: "ref"
18263
18263
  };
18264
18264
  const ComboboxDropdownTarget = factory((props, ref) => {
18265
- const { children, refProp } = useProps("ComboboxDropdownTarget", defaultProps$t, props);
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$n;
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$s = {
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$s, props);
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$n;
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$n;
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$n;
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$n;
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$n;
18571
+ ComboboxOptions.classes = classes$p;
18572
18572
  ComboboxOptions.displayName = "@mantine/core/ComboboxOptions";
18573
- const defaultProps$r = {
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$r, _props);
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$n;
18613
+ ComboboxSearch.classes = classes$p;
18614
18614
  ComboboxSearch.displayName = "@mantine/core/ComboboxSearch";
18615
- const defaultProps$q = {
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$q, props);
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$p = {
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$p = createVarsResolver((_, { size: size2, dropdownPadding }) => ({
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$p, _props);
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$n,
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$p
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$n;
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$m = { "root": "m_5f75b09e", "body": "m_5f6e695e", "labelWrapper": "m_d3ea56bb", "label": "m_8ee546b8", "description": "m_328f68c0", "error": "m_8e8a99cc" };
18979
- const InlineInputClasses = classes$m;
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$m,
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$l = { "card": "m_26775b0a" };
19064
- const defaultProps$o = {
19063
+ var classes$n = { "card": "m_26775b0a" };
19064
+ const defaultProps$s = {
19065
19065
  withBorder: true
19066
19066
  };
19067
- const varsResolver$o = createVarsResolver((_, { radius }) => ({
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$o, _props);
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$l,
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$o,
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$l;
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$k = { "indicator": "m_5e5256ee", "icon": "m_1b1c543a", "indicator--outline": "m_76e20374" };
19208
- const defaultProps$n = {
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$n = createVarsResolver(
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$n, _props);
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$k,
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$n,
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$k;
19277
- var classes$j = { "root": "m_bf2d988c", "inner": "m_26062bec", "input": "m_26063560", "icon": "m_bf295423", "input--outline": "m_215c4542" };
19278
- const defaultProps$m = {
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$m = createVarsResolver(
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$m, _props);
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$j,
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$m
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$j, ...InlineInputClasses };
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$n.optionsDropdownCheckIcon });
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$n.optionsDropdownOption]: !unstyled }),
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$i = { "group": "m_11def92b", "root": "m_f85678b6", "image": "m_11f8ac07", "placeholder": "m_104cd71f" };
19588
- const varsResolver$l = createVarsResolver((_, { spacing }) => ({
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$i,
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$l,
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$i;
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$k = createVarsResolver(
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$i,
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$k
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$i;
19753
+ Avatar.classes = classes$k;
19754
19754
  Avatar.displayName = "@mantine/core/Avatar";
19755
19755
  Avatar.Group = AvatarGroup;
19756
- var classes$h = { "root": "m_347db0ec", "root--dot": "m_fbd81e3d", "label": "m_5add502a", "section": "m_91fdda9b" };
19757
- const varsResolver$j = createVarsResolver(
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$h,
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$j
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$h;
19840
+ Badge.classes = classes$j;
19841
19841
  Badge.displayName = "@mantine/core/Badge";
19842
- var classes$g = { "root": "m_77c9d27d", "inner": "m_80f1301b", "label": "m_811560b9", "section": "m_a74036a", "loader": "m_a25b86ee", "group": "m_80d6d844", "groupSection": "m_70be2a01" };
19843
- const defaultProps$l = {
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$i = createVarsResolver((_, { borderWidth }) => ({
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$l, _props);
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$l, _props);
19864
+ } = useProps("ButtonGroup", defaultProps$p, _props);
19865
19865
  const getStyles2 = useStyles({
19866
19866
  name: "ButtonGroup",
19867
19867
  props,
19868
- classes: classes$g,
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$i,
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$g;
19891
+ ButtonGroup.classes = classes$i;
19892
19892
  ButtonGroup.displayName = "@mantine/core/ButtonGroup";
19893
- const varsResolver$h = createVarsResolver(
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$g,
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$h,
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$g;
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$g = createVarsResolver(
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$g,
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$g
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$g;
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$f = { "root": "m_4451eb3a" };
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$f,
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$f;
20091
+ Center.classes = classes$h;
20092
20092
  Center.displayName = "@mantine/core/Center";
20093
- var classes$e = { "root": "m_b183c0a2" };
20094
- const varsResolver$f = createVarsResolver((theme2, { color: color2 }) => ({
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$e,
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$f
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$e;
20141
+ Code.classes = classes$g;
20142
20142
  Code.displayName = "@mantine/core/Code";
20143
- var classes$d = { "root": "m_3eebeb36", "label": "m_9e365f20" };
20144
- const defaultProps$k = {
20143
+ var classes$f = { "root": "m_3eebeb36", "label": "m_9e365f20" };
20144
+ const defaultProps$o = {
20145
20145
  orientation: "horizontal"
20146
20146
  };
20147
- const varsResolver$e = createVarsResolver((theme2, { color: color2, variant, size: size2 }) => ({
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$k, _props);
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$d,
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$e
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$d;
20196
+ Divider.classes = classes$f;
20197
20197
  Divider.displayName = "@mantine/core/Divider";
20198
- var classes$c = { "root": "m_9e117634" };
20199
- const varsResolver$d = createVarsResolver((_, { radius, fit }) => ({
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$c,
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$d
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$c;
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$b = { "dropdown": "m_dc9b7c9f", "label": "m_9bfac126", "divider": "m_efdf90cb", "item": "m_99ac2aa1", "itemLabel": "m_5476e0d3", "itemSection": "m_8b75e504", "chevron": "m_b85b0bed" };
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$b;
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$b;
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$b;
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$b;
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$b;
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$b;
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$j = {
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$j, _props);
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$i = {
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$i, props);
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$h = {
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$h, _props);
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$b,
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$b;
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$a = { "root": "m_9df02822", "content": "m_54c44539", "inner": "m_1f958f16", "header": "m_d0e2b9cd" };
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$a;
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$a;
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$a;
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$a;
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$a;
21157
+ ModalOverlay.classes = classes$c;
21158
21158
  ModalOverlay.displayName = "@mantine/core/ModalOverlay";
21159
- const defaultProps$g = {
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$c = createVarsResolver(
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$g, _props);
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$a,
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$c
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$a;
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$a;
21267
+ ModalTitle.classes = classes$c;
21268
21268
  ModalTitle.displayName = "@mantine/core/ModalTitle";
21269
- const defaultProps$f = {
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$f, _props);
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$a;
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$e = {
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$e, _props);
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$d = {
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$d, _props);
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$c = {
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$c, props);
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$b = {
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$b, _props);
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$b, props);
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$a = {
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$a, _props);
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$9 = {
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$9, _props);
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$8 = {
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$8, props);
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$7 = {
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$7, _props);
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$6 = {
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$6, _props);
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$5 = {
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$5, _props);
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$4 = {
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$4, _props);
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$3 = {
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$3, _props);
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-Dk5ihq1Y.js"), true ? [] : void 0), {});
188637
+ const MonacoEditor = dynamic(() => __vitePreload(() => import("./index-C_mtQZuo.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",
@@ -191618,7 +192260,7 @@ const ActionStatement = ({
191618
192260
  gradientClassName: "animate-gradient-cyan"
191619
192261
  }
191620
192262
  ) : void 0;
191621
- const shouldShowV2Settings = () => shouldShowAIToggle() || isAssertionAction;
192263
+ const shouldShowV2Settings = () => isDraftStatement || shouldShowAIToggle() || isAssertionAction;
191622
192264
  const v2SettingsAction = reactExports.useMemo(() => {
191623
192265
  if (!v2 || !shouldShowV2Settings()) return void 0;
191624
192266
  return /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { label: t2("floatingActionBar.edit"), position: "top", withArrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -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,131 @@ const getConsoleLineStyle = (line) => {
199609
200255
  className: ""
199610
200256
  };
199611
200257
  };
199612
- const TestInfoView = ({ className = "", testContextInfo = null }) => {
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("context");
200375
+ const [activeTab, setActiveTab] = reactExports.useState(
200376
+ () => testConfigInfo ? "config" : "context"
200377
+ );
200378
+ reactExports.useEffect(() => {
200379
+ if (!testConfigInfo && activeTab === "config") {
200380
+ setActiveTab("context");
200381
+ }
200382
+ }, [testConfigInfo]);
199615
200383
  const [panelHeight, setPanelHeight] = reactExports.useState(200);
199616
200384
  const [isDragging, setIsDragging] = reactExports.useState(false);
199617
200385
  const [previousHeight, setPreviousHeight] = reactExports.useState(200);
@@ -199778,6 +200546,7 @@ const TestInfoView = ({ className = "", testContextInfo = null }) => {
199778
200546
  ),
199779
200547
  /* @__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
200548
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Tabs.List, { children: [
200549
+ testConfigInfo && /* @__PURE__ */ jsxRuntimeExports.jsx(Tabs.Tab, { value: "config", leftSection: /* @__PURE__ */ jsxRuntimeExports.jsx(IconSettings, { size: 16 }), children: t2("configTab") }),
199781
200550
  /* @__PURE__ */ jsxRuntimeExports.jsx(Tabs.Tab, { value: "context", leftSection: /* @__PURE__ */ jsxRuntimeExports.jsx(IconInfoCircle, { size: 16 }), children: t2("variablesTab") }),
199782
200551
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Tabs.Tab, { value: "console", leftSection: /* @__PURE__ */ jsxRuntimeExports.jsx(IconTerminal, { size: 16 }), children: [
199783
200552
  t2("consoleTab"),
@@ -199785,6 +200554,13 @@ const TestInfoView = ({ className = "", testContextInfo = null }) => {
199785
200554
  consoleLines.length > 0 && `(${consoleLines.length})`
199786
200555
  ] })
199787
200556
  ] }),
200557
+ 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: [
200558
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Table, { className: "test-context-table", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Table.Tbody, { children: [
200559
+ renderConfigFields(testConfigInfo),
200560
+ /* @__PURE__ */ jsxRuntimeExports.jsx(EditableConfigFields, { config: testConfigInfo, onConfigChange })
200561
+ ] }) }),
200562
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-4" })
200563
+ ] }) }) }),
199788
200564
  /* @__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
200565
  /* @__PURE__ */ jsxRuntimeExports.jsx(Table, { className: "test-context-table", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Table.Tbody, { children: renderNestedFields(testContextInfo.testContext) }) }),
199790
200566
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-4" }),
@@ -199833,7 +200609,9 @@ const PreviewPanel = We.memo(
199833
200609
  session,
199834
200610
  isFullScreen = false,
199835
200611
  onToggleFullScreen,
199836
- testContextInfo
200612
+ testContextInfo,
200613
+ testConfigInfo,
200614
+ onConfigChange
199837
200615
  }) => {
199838
200616
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "h-full overflow-y-auto flex flex-col", children: [
199839
200617
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -199853,7 +200631,7 @@ const PreviewPanel = We.memo(
199853
200631
  isFullScreen
199854
200632
  }
199855
200633
  ) }),
199856
- !isFullScreen && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pb-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(TestInfoView, { testContextInfo }) })
200634
+ !isFullScreen && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pb-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(TestInfoView, { testContextInfo, testConfigInfo, onConfigChange }) })
199857
200635
  ] });
199858
200636
  }
199859
200637
  );
@@ -200205,10 +200983,15 @@ function useLocalTestFlow(file) {
200205
200983
  reactExports.useEffect(() => {
200206
200984
  fetchTestFlow();
200207
200985
  }, [fetchTestFlow]);
200208
- const saveTestFlow = reactExports.useCallback(
200209
- async (newTestFlow) => {
200210
- if (!data || !file) return;
200211
- const metadata = data.isSuite ? { name: data.name, tags: data.tags, use: data.use, ...data.metadata } : data.metadata;
200986
+ const saveWithData = reactExports.useCallback(
200987
+ async (snapshot, newTestFlow) => {
200988
+ if (!file) return;
200989
+ let cleanUse = snapshot.use ? { ...snapshot.use } : void 0;
200990
+ if (cleanUse) {
200991
+ if (cleanUse.autoDismissModal === false) delete cleanUse.autoDismissModal;
200992
+ if (Object.keys(cleanUse).length === 0) cleanUse = void 0;
200993
+ }
200994
+ const metadata = snapshot.isSuite ? { name: snapshot.name, tags: snapshot.tags, use: cleanUse, ...snapshot.metadata } : { ...snapshot.metadata, tags: snapshot.tags, use: cleanUse };
200212
200995
  const url = apiUrl(`/api/test-flow?file=${encodeURIComponent(file)}`);
200213
200996
  const res = await fetch(url, {
200214
200997
  method: "PUT",
@@ -200216,15 +200999,22 @@ function useLocalTestFlow(file) {
200216
200999
  body: JSON.stringify({ testFlow: newTestFlow, metadata })
200217
201000
  });
200218
201001
  if (!res.ok) throw new Error(`Failed to save: ${res.statusText}`);
201002
+ },
201003
+ [file]
201004
+ );
201005
+ const saveTestFlow = reactExports.useCallback(
201006
+ async (newTestFlow) => {
201007
+ if (!data) return;
201008
+ await saveWithData(data, newTestFlow);
200219
201009
  if (data.isSuite) {
200220
201010
  await fetchTestFlow();
200221
201011
  } else {
200222
201012
  setData((prev) => prev ? { ...prev, testFlow: newTestFlow } : prev);
200223
201013
  }
200224
201014
  },
200225
- [data, file, fetchTestFlow]
201015
+ [data, saveWithData, fetchTestFlow]
200226
201016
  );
200227
- return { data, loading, error, saveTestFlow, refetch: fetchTestFlow };
201017
+ return { data, setData, loading, error, saveTestFlow, saveWithData, refetch: fetchTestFlow };
200228
201018
  }
200229
201019
  function useLocalTestResults(file) {
200230
201020
  const [data, setData] = reactExports.useState(null);
@@ -200359,7 +201149,7 @@ function LocalDebuggerPage() {
200359
201149
  },
200360
201150
  [config2]
200361
201151
  );
200362
- const { data, loading, error, saveTestFlow } = useLocalTestFlow(selectedFile);
201152
+ const { data, setData, loading, error, saveTestFlow, saveWithData } = useLocalTestFlow(selectedFile);
200363
201153
  const testResults = useLocalTestResults(selectedFile);
200364
201154
  reactExports.useEffect(() => {
200365
201155
  if (!testResults) return;
@@ -200478,6 +201268,40 @@ function LocalDebuggerPage() {
200478
201268
  );
200479
201269
  return { testCase: tc, dividerMap: dividers, cloneUidMap: cloneMap };
200480
201270
  }, [data]);
201271
+ const testConfigInfo = reactExports.useMemo(() => {
201272
+ var _a, _b, _c, _d, _e, _f;
201273
+ if (!data) return null;
201274
+ return {
201275
+ name: data.name,
201276
+ goal: ((_a = data.metadata) == null ? void 0 : _a.goal) || ((_b = data.testFlow) == null ? void 0 : _b.goal),
201277
+ baseURL: ((_c = data.testFlow) == null ? void 0 : _c.baseURL) || ((_d = data.use) == null ? void 0 : _d.baseURL),
201278
+ tags: data.tags,
201279
+ use: data.use,
201280
+ parameters: data.parameters,
201281
+ timeout: (_e = data.metadata) == null ? void 0 : _e.timeout,
201282
+ skip: (_f = data.metadata) == null ? void 0 : _f.skip,
201283
+ fileName: data.fileName
201284
+ };
201285
+ }, [data]);
201286
+ const handleConfigChange = reactExports.useCallback((key2, value2, source) => {
201287
+ configDirtyRef.current = true;
201288
+ setData((prev) => {
201289
+ if (!prev) return prev;
201290
+ if (source === "use") {
201291
+ return { ...prev, use: { ...prev.use, [key2]: value2 } };
201292
+ }
201293
+ if (source === "top") {
201294
+ return { ...prev, [key2]: value2 };
201295
+ }
201296
+ return prev;
201297
+ });
201298
+ }, [setData]);
201299
+ const configDirtyRef = reactExports.useRef(false);
201300
+ reactExports.useEffect(() => {
201301
+ if (!data || !configDirtyRef.current) return;
201302
+ configDirtyRef.current = false;
201303
+ saveWithData(data, data.testFlow).catch((e) => console.error("[debugger] Config save error:", e));
201304
+ }, [data, saveWithData]);
200481
201305
  const renderBetweenStatements = reactExports.useCallback(
200482
201306
  (_beforeUid, afterUid) => {
200483
201307
  if (!afterUid || !dividerMap) return null;
@@ -200647,7 +201471,9 @@ function LocalDebuggerPage() {
200647
201471
  activeTab,
200648
201472
  onTabChange: handleSetActiveTab,
200649
201473
  session: session ?? void 0,
200650
- testContextInfo
201474
+ testContextInfo,
201475
+ testConfigInfo,
201476
+ onConfigChange: handleConfigChange
200651
201477
  }
200652
201478
  ) })
200653
201479
  ] })
@@ -200668,7 +201494,7 @@ const Login = { "title": "Login", "continueWithGoogle": "Continue with Google",
200668
201494
  const OAuth = { "slackCallback": { "loading": "Loading...", "processingLogin": "Processing login...", "errorWithMessage": "Error: {error}", "parentClosedWarning": "Parent window was closed before callback." } };
200669
201495
  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
201496
  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"}}`);
201497
+ 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
201498
  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
201499
  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
201500
  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 +201582,4 @@ export {
200756
201582
  We as W,
200757
201583
  reactExports as r
200758
201584
  };
200759
- //# sourceMappingURL=index-Mg0a6DkO.js.map
201585
+ //# sourceMappingURL=index-kLbqwQLo.js.map