local-operator-ui 0.1.2-beta.6 → 0.1.2-beta.7

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.
@@ -1,4 +1,4 @@
1
- import { c as createStyled, r as resolveProps, u as useTheme, a as reactExports, b as clsx, d as useForkRef, j as jsxRuntimeExports, e as capitalize, f as composeClasses, g as createTheme, h as generateUtilityClass, i as generateUtilityClasses, k as useDefaultProps, s as styled$1, m as memoTheme, l as getDefaultExportFromCjs, n as requireReactDom, _ as _inheritsLoose, o as _objectWithoutPropertiesLoose$1, R as React, T as TransitionGroupContext, p as duration, q as useTheme$1, t as useTimeout, v as useId, B as ButtonBase, w as alpha, x as createSimplePaletteValueFilter, C as CircularProgress, P as Paper, y as darken, z as lighten, A as useEventCallback, D as setRef, E as useEnhancedEffect, F as useRtl, G as globalCss, H as formatMuiErrorMessage, I as rootShouldForwardProp, J as Typography, K as deepmerge, L as extendSxProp, M as resolveBreakpointValues, N as handleBreakpoints, O as getPath, Q as isFocusVisible, S as typographyClasses, U as slotShouldForwardProp, V as clamp, W as Timeout, X as React$1, Y as Box, Z as FontAwesomeIcon, $ as faRobot, a0 as faSliders, a1 as Button, a2 as faExclamationTriangle, a3 as faCheck, a4 as faTimes, a5 as faEraser, a6 as faPen, a7 as faInfoCircle, a8 as faGear, a9 as faServer, aa as faStar, ab as faTrash, ac as faCommentDots, ad as faCode, ae as faHome, af as faDownload, ag as faFileAlt, ah as faDesktop, ai as faImage, aj as faMusic, ak as faVideo, al as faLaptop, am as faUsers, an as faDatabase, ao as faBoxOpen, ap as faBook, aq as faHdd, ar as faBox, as as faArchive, at as faNetworkWired, au as faFolder, av as faFolderOpen, aw as faClock, ax as faChevronDown, ay as faTools, az as faArrowDown, aA as faPaperclip, aB as faStop, aC as faPaperPlane, aD as faUser, aE as faFile, aF as faEllipsisVertical, aG as faComment, aH as faChevronLeft, aI as faChevronRight, aJ as faPlus, aK as faSearch, aL as faCommentSlash, aM as faArrowRight, aN as faComments, aO as faTag, aP as faIdCard, aQ as faCalendarAlt, aR as faCodeBranch, aS as faShieldAlt, aT as faArrowLeft, aU as keyframes, aV as faShield, aW as faSignOut, aX as faLightbulb, aY as faMagicWandSparkles, aZ as faBrain, a_ as faWandMagicSparkles, a$ as faExternalLinkAlt, b0 as faKey, b1 as faGlobe, b2 as faLock, b3 as faEdit, b4 as faSave, b5 as faEnvelope, b6 as faCloudUploadAlt, b7 as faHistory, b8 as faListAlt, b9 as library$1, ba as icons$1, bb as CssBaseline, bc as ReactDOM$1, bd as ThemeProvider, be as theme, bf as ErrorBoundary } from "./theme-IY_ZyJQp.js";
1
+ import { c as createStyled, r as resolveProps, u as useTheme, a as reactExports, b as clsx, d as useForkRef, j as jsxRuntimeExports, e as capitalize, f as composeClasses, g as createTheme, h as generateUtilityClass, i as generateUtilityClasses, k as useDefaultProps, s as styled$1, m as memoTheme, l as getDefaultExportFromCjs, n as requireReactDom, _ as _inheritsLoose, o as _objectWithoutPropertiesLoose$1, R as React, T as TransitionGroupContext, p as duration, q as useTheme$1, t as useTimeout, v as useId, B as ButtonBase, w as alpha, x as createSimplePaletteValueFilter, C as CircularProgress, P as Paper, y as darken, z as lighten, A as useEventCallback, D as setRef, E as useEnhancedEffect, F as useRtl, G as globalCss, H as formatMuiErrorMessage, I as rootShouldForwardProp, J as Typography, K as deepmerge, L as extendSxProp, M as resolveBreakpointValues, N as handleBreakpoints, O as getPath, Q as isFocusVisible, S as typographyClasses, U as slotShouldForwardProp, V as clamp, W as emphasize, X as Timeout, Y as React$1, Z as Box, $ as FontAwesomeIcon, a0 as faRobot, a1 as faSliders, a2 as Button, a3 as faExclamationTriangle, a4 as faCheck, a5 as faTimes, a6 as faEraser, a7 as faPen, a8 as faInfoCircle, a9 as faGear, aa as faServer, ab as faStar, ac as faTrash, ad as faCommentDots, ae as faCode, af as faHome, ag as faDownload, ah as faFileAlt, ai as faDesktop, aj as faImage, ak as faMusic, al as faVideo, am as faLaptop, an as faUsers, ao as faDatabase, ap as faBoxOpen, aq as faBook, ar as faHdd, as as faBox, at as faArchive, au as faNetworkWired, av as faFolder, aw as faFolderOpen, ax as faClock, ay as faChevronDown, az as faTools, aA as faArrowDown, aB as faPaperclip, aC as faStop, aD as faPaperPlane, aE as faUser, aF as faFile, aG as faEllipsisVertical, aH as faComment, aI as faChevronLeft, aJ as faChevronRight, aK as faPlus, aL as faSearch, aM as faCommentSlash, aN as faArrowRight, aO as faComments, aP as faTag, aQ as faIdCard, aR as faCalendarAlt, aS as faCodeBranch, aT as faShieldAlt, aU as faArrowLeft, aV as LinearProgress, aW as keyframes, aX as faShield, aY as faSignOut, aZ as faLightbulb, a_ as faMagicWandSparkles, a$ as faBrain, b0 as faWandMagicSparkles, b1 as faExternalLinkAlt, b2 as faKey, b3 as faGlobe, b4 as faLock, b5 as faEdit, b6 as faSave, b7 as faEnvelope, b8 as faCloudUploadAlt, b9 as faHistory, ba as faListAlt, bb as library$1, bc as icons$1, bd as CssBaseline, be as ReactDOM$1, bf as ThemeProvider, bg as theme, bh as ErrorBoundary } from "./theme-C9zRS1f0.js";
2
2
  const styled = createStyled();
3
3
  function getThemeProps(params) {
4
4
  const {
@@ -256,7 +256,7 @@ const useThemePropsDefault = (inProps) => useThemeProps({
256
256
  name: "MuiContainer",
257
257
  defaultTheme
258
258
  });
259
- const useUtilityClasses$Q = (ownerState, componentName) => {
259
+ const useUtilityClasses$S = (ownerState, componentName) => {
260
260
  const getContainerUtilityClass = (slot) => {
261
261
  return generateUtilityClass(componentName, slot);
262
262
  };
@@ -346,7 +346,7 @@ function createContainer(options = {}) {
346
346
  fixed,
347
347
  maxWidth
348
348
  };
349
- const classes = useUtilityClasses$Q(ownerState, componentName);
349
+ const classes = useUtilityClasses$S(ownerState, componentName);
350
350
  return (
351
351
  // @ts-ignore theme is injected by the styled util
352
352
  /* @__PURE__ */ jsxRuntimeExports.jsx(ContainerRoot, {
@@ -364,7 +364,7 @@ function getSvgIconUtilityClass(slot) {
364
364
  return generateUtilityClass("MuiSvgIcon", slot);
365
365
  }
366
366
  generateUtilityClasses("MuiSvgIcon", ["root", "colorPrimary", "colorSecondary", "colorAction", "colorError", "colorDisabled", "fontSizeInherit", "fontSizeSmall", "fontSizeMedium", "fontSizeLarge"]);
367
- const useUtilityClasses$P = (ownerState) => {
367
+ const useUtilityClasses$R = (ownerState) => {
368
368
  const {
369
369
  color: color2,
370
370
  fontSize,
@@ -503,7 +503,7 @@ const SvgIcon = /* @__PURE__ */ reactExports.forwardRef(function SvgIcon2(inProp
503
503
  if (!inheritViewBox) {
504
504
  more.viewBox = viewBox;
505
505
  }
506
- const classes = useUtilityClasses$P(ownerState);
506
+ const classes = useUtilityClasses$R(ownerState);
507
507
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(SvgIconRoot, {
508
508
  as: component,
509
509
  className: clsx(classes.root, className),
@@ -861,7 +861,7 @@ function getCollapseUtilityClass(slot) {
861
861
  return generateUtilityClass("MuiCollapse", slot);
862
862
  }
863
863
  generateUtilityClasses("MuiCollapse", ["root", "horizontal", "vertical", "entered", "hidden", "wrapper", "wrapperInner"]);
864
- const useUtilityClasses$O = (ownerState) => {
864
+ const useUtilityClasses$Q = (ownerState) => {
865
865
  const {
866
866
  orientation,
867
867
  classes
@@ -989,7 +989,7 @@ const Collapse = /* @__PURE__ */ reactExports.forwardRef(function Collapse2(inPr
989
989
  orientation,
990
990
  collapsedSize: collapsedSizeProp
991
991
  };
992
- const classes = useUtilityClasses$O(ownerState);
992
+ const classes = useUtilityClasses$Q(ownerState);
993
993
  const theme2 = useTheme$1();
994
994
  const timer = useTimeout();
995
995
  const wrapperRef = reactExports.useRef(null);
@@ -1204,7 +1204,7 @@ function getIconButtonUtilityClass(slot) {
1204
1204
  return generateUtilityClass("MuiIconButton", slot);
1205
1205
  }
1206
1206
  const iconButtonClasses = generateUtilityClasses("MuiIconButton", ["root", "disabled", "colorInherit", "colorPrimary", "colorSecondary", "colorError", "colorInfo", "colorSuccess", "colorWarning", "edgeStart", "edgeEnd", "sizeSmall", "sizeMedium", "sizeLarge", "loading", "loadingIndicator", "loadingWrapper"]);
1207
- const useUtilityClasses$N = (ownerState) => {
1207
+ const useUtilityClasses$P = (ownerState) => {
1208
1208
  const {
1209
1209
  classes,
1210
1210
  disabled,
@@ -1390,7 +1390,7 @@ const IconButton = /* @__PURE__ */ reactExports.forwardRef(function IconButton2(
1390
1390
  loadingIndicator,
1391
1391
  size
1392
1392
  };
1393
- const classes = useUtilityClasses$N(ownerState);
1393
+ const classes = useUtilityClasses$P(ownerState);
1394
1394
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(IconButtonRoot, {
1395
1395
  id: loading ? loadingId : idProp,
1396
1396
  className: clsx(classes.root, className),
@@ -1429,7 +1429,7 @@ const InfoOutlinedIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("pa
1429
1429
  const ClearIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
1430
1430
  d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
1431
1431
  }), "Close");
1432
- const useUtilityClasses$M = (ownerState) => {
1432
+ const useUtilityClasses$O = (ownerState) => {
1433
1433
  const {
1434
1434
  variant,
1435
1435
  color: color2,
@@ -1584,7 +1584,7 @@ const Alert = /* @__PURE__ */ reactExports.forwardRef(function Alert2(inProps, r
1584
1584
  variant,
1585
1585
  colorSeverity: color2 || severity
1586
1586
  };
1587
- const classes = useUtilityClasses$M(ownerState);
1587
+ const classes = useUtilityClasses$O(ownerState);
1588
1588
  const externalForwardedProps = {
1589
1589
  slots: {
1590
1590
  closeButton: components.CloseButton,
@@ -3937,7 +3937,7 @@ function resolveAnchorEl$1(anchorEl) {
3937
3937
  function isHTMLElement(element2) {
3938
3938
  return element2.nodeType !== void 0;
3939
3939
  }
3940
- const useUtilityClasses$L = (ownerState) => {
3940
+ const useUtilityClasses$N = (ownerState) => {
3941
3941
  const {
3942
3942
  classes
3943
3943
  } = ownerState;
@@ -4038,7 +4038,7 @@ const PopperTooltip = /* @__PURE__ */ reactExports.forwardRef(function PopperToo
4038
4038
  if (TransitionProps !== null) {
4039
4039
  childProps.TransitionProps = TransitionProps;
4040
4040
  }
4041
- const classes = useUtilityClasses$L(props);
4041
+ const classes = useUtilityClasses$N(props);
4042
4042
  const Root = slots.root ?? "div";
4043
4043
  const rootProps = useSlotProps({
4044
4044
  elementType: Root,
@@ -4186,7 +4186,7 @@ function getListSubheaderUtilityClass(slot) {
4186
4186
  return generateUtilityClass("MuiListSubheader", slot);
4187
4187
  }
4188
4188
  generateUtilityClasses("MuiListSubheader", ["root", "colorPrimary", "colorInherit", "gutters", "inset", "sticky"]);
4189
- const useUtilityClasses$K = (ownerState) => {
4189
+ const useUtilityClasses$M = (ownerState) => {
4190
4190
  const {
4191
4191
  classes,
4192
4192
  color: color2,
@@ -4281,7 +4281,7 @@ const ListSubheader = /* @__PURE__ */ reactExports.forwardRef(function ListSubhe
4281
4281
  disableSticky,
4282
4282
  inset
4283
4283
  };
4284
- const classes = useUtilityClasses$K(ownerState);
4284
+ const classes = useUtilityClasses$M(ownerState);
4285
4285
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ListSubheaderRoot, {
4286
4286
  as: component,
4287
4287
  className: clsx(classes.root, className),
@@ -4300,7 +4300,7 @@ function getChipUtilityClass(slot) {
4300
4300
  return generateUtilityClass("MuiChip", slot);
4301
4301
  }
4302
4302
  const chipClasses = generateUtilityClasses("MuiChip", ["root", "sizeSmall", "sizeMedium", "colorDefault", "colorError", "colorInfo", "colorPrimary", "colorSecondary", "colorSuccess", "colorWarning", "disabled", "clickable", "clickableColorPrimary", "clickableColorSecondary", "deletable", "deletableColorPrimary", "deletableColorSecondary", "outlined", "filled", "outlinedPrimary", "outlinedSecondary", "filledPrimary", "filledSecondary", "avatar", "avatarSmall", "avatarMedium", "avatarColorPrimary", "avatarColorSecondary", "icon", "iconSmall", "iconMedium", "iconColorPrimary", "iconColorSecondary", "label", "labelSmall", "labelMedium", "deleteIcon", "deleteIconSmall", "deleteIconMedium", "deleteIconColorPrimary", "deleteIconColorSecondary", "deleteIconOutlinedColorPrimary", "deleteIconOutlinedColorSecondary", "deleteIconFilledColorPrimary", "deleteIconFilledColorSecondary", "focusVisible"]);
4303
- const useUtilityClasses$J = (ownerState) => {
4303
+ const useUtilityClasses$L = (ownerState) => {
4304
4304
  const {
4305
4305
  classes,
4306
4306
  disabled,
@@ -4691,7 +4691,7 @@ const Chip = /* @__PURE__ */ reactExports.forwardRef(function Chip2(inProps, ref
4691
4691
  clickable,
4692
4692
  variant
4693
4693
  };
4694
- const classes = useUtilityClasses$J(ownerState);
4694
+ const classes = useUtilityClasses$L(ownerState);
4695
4695
  const moreProps = component === ButtonBase ? {
4696
4696
  component: ComponentProp || "div",
4697
4697
  focusVisibleClassName: classes.focusVisible,
@@ -4948,7 +4948,7 @@ const inputOverridesResolver = (props, styles2) => {
4948
4948
  } = props;
4949
4949
  return [styles2.input, ownerState.size === "small" && styles2.inputSizeSmall, ownerState.multiline && styles2.inputMultiline, ownerState.type === "search" && styles2.inputTypeSearch, ownerState.startAdornment && styles2.inputAdornedStart, ownerState.endAdornment && styles2.inputAdornedEnd, ownerState.hiddenLabel && styles2.inputHiddenLabel];
4950
4950
  };
4951
- const useUtilityClasses$I = (ownerState) => {
4951
+ const useUtilityClasses$K = (ownerState) => {
4952
4952
  const {
4953
4953
  classes,
4954
4954
  color: color2,
@@ -5334,7 +5334,7 @@ const InputBase = /* @__PURE__ */ reactExports.forwardRef(function InputBase2(in
5334
5334
  startAdornment,
5335
5335
  type
5336
5336
  };
5337
- const classes = useUtilityClasses$I(ownerState);
5337
+ const classes = useUtilityClasses$K(ownerState);
5338
5338
  const Root = slots.root || components.Root || InputBaseRoot;
5339
5339
  const rootProps = slotProps.root || componentsProps.root || {};
5340
5340
  const Input3 = slots.input || components.Input || InputBaseInput;
@@ -5427,7 +5427,7 @@ function getAutocompleteUtilityClass(slot) {
5427
5427
  }
5428
5428
  const autocompleteClasses = generateUtilityClasses("MuiAutocomplete", ["root", "expanded", "fullWidth", "focused", "focusVisible", "tag", "tagSizeSmall", "tagSizeMedium", "hasPopupIcon", "hasClearIcon", "inputRoot", "input", "inputFocused", "endAdornment", "clearIndicator", "popupIndicator", "popupIndicatorOpen", "popper", "popperDisablePortal", "paper", "listbox", "loading", "noOptions", "option", "groupLabel", "groupUl"]);
5429
5429
  var _ClearIcon, _ArrowDropDownIcon;
5430
- const useUtilityClasses$H = (ownerState) => {
5430
+ const useUtilityClasses$J = (ownerState) => {
5431
5431
  const {
5432
5432
  classes,
5433
5433
  disablePortal,
@@ -5923,7 +5923,7 @@ const Autocomplete = /* @__PURE__ */ reactExports.forwardRef(function Autocomple
5923
5923
  popupOpen,
5924
5924
  size
5925
5925
  };
5926
- const classes = useUtilityClasses$H(ownerState);
5926
+ const classes = useUtilityClasses$J(ownerState);
5927
5927
  const externalForwardedProps = {
5928
5928
  slots: {
5929
5929
  paper: PaperComponentProp,
@@ -6138,7 +6138,7 @@ function getAvatarUtilityClass(slot) {
6138
6138
  return generateUtilityClass("MuiAvatar", slot);
6139
6139
  }
6140
6140
  generateUtilityClasses("MuiAvatar", ["root", "colorDefault", "circular", "rounded", "square", "img", "fallback"]);
6141
- const useUtilityClasses$G = (ownerState) => {
6141
+ const useUtilityClasses$I = (ownerState) => {
6142
6142
  const {
6143
6143
  classes,
6144
6144
  variant,
@@ -6303,7 +6303,7 @@ const Avatar = /* @__PURE__ */ reactExports.forwardRef(function Avatar2(inProps,
6303
6303
  const hasImgNotFailing = hasImg && loaded !== "error";
6304
6304
  ownerState.colorDefault = !hasImgNotFailing;
6305
6305
  delete ownerState.ownerState;
6306
- const classes = useUtilityClasses$G(ownerState);
6306
+ const classes = useUtilityClasses$I(ownerState);
6307
6307
  const [ImgSlot, imgSlotProps] = useSlot("img", {
6308
6308
  className: classes.img,
6309
6309
  elementType: AvatarImg,
@@ -6464,7 +6464,7 @@ function getBackdropUtilityClass(slot) {
6464
6464
  return generateUtilityClass("MuiBackdrop", slot);
6465
6465
  }
6466
6466
  generateUtilityClasses("MuiBackdrop", ["root", "invisible"]);
6467
- const useUtilityClasses$F = (ownerState) => {
6467
+ const useUtilityClasses$H = (ownerState) => {
6468
6468
  const {
6469
6469
  classes,
6470
6470
  invisible
@@ -6527,7 +6527,7 @@ const Backdrop = /* @__PURE__ */ reactExports.forwardRef(function Backdrop2(inPr
6527
6527
  component,
6528
6528
  invisible
6529
6529
  };
6530
- const classes = useUtilityClasses$F(ownerState);
6530
+ const classes = useUtilityClasses$H(ownerState);
6531
6531
  const backwardCompatibleSlots = {
6532
6532
  transition: TransitionComponentProp,
6533
6533
  root: components.Root,
@@ -6570,7 +6570,7 @@ function getCardUtilityClass(slot) {
6570
6570
  return generateUtilityClass("MuiCard", slot);
6571
6571
  }
6572
6572
  generateUtilityClasses("MuiCard", ["root"]);
6573
- const useUtilityClasses$E = (ownerState) => {
6573
+ const useUtilityClasses$G = (ownerState) => {
6574
6574
  const {
6575
6575
  classes
6576
6576
  } = ownerState;
@@ -6600,7 +6600,7 @@ const Card = /* @__PURE__ */ reactExports.forwardRef(function Card2(inProps, ref
6600
6600
  ...props,
6601
6601
  raised
6602
6602
  };
6603
- const classes = useUtilityClasses$E(ownerState);
6603
+ const classes = useUtilityClasses$G(ownerState);
6604
6604
  return /* @__PURE__ */ jsxRuntimeExports.jsx(CardRoot, {
6605
6605
  className: clsx(classes.root, className),
6606
6606
  elevation: raised ? 8 : void 0,
@@ -6613,7 +6613,7 @@ function getCardContentUtilityClass(slot) {
6613
6613
  return generateUtilityClass("MuiCardContent", slot);
6614
6614
  }
6615
6615
  generateUtilityClasses("MuiCardContent", ["root"]);
6616
- const useUtilityClasses$D = (ownerState) => {
6616
+ const useUtilityClasses$F = (ownerState) => {
6617
6617
  const {
6618
6618
  classes
6619
6619
  } = ownerState;
@@ -6646,7 +6646,7 @@ const CardContent = /* @__PURE__ */ reactExports.forwardRef(function CardContent
6646
6646
  ...props,
6647
6647
  component
6648
6648
  };
6649
- const classes = useUtilityClasses$D(ownerState);
6649
+ const classes = useUtilityClasses$F(ownerState);
6650
6650
  return /* @__PURE__ */ jsxRuntimeExports.jsx(CardContentRoot, {
6651
6651
  as: component,
6652
6652
  className: clsx(classes.root, className),
@@ -6659,7 +6659,7 @@ function getSwitchBaseUtilityClass(slot) {
6659
6659
  return generateUtilityClass("PrivateSwitchBase", slot);
6660
6660
  }
6661
6661
  generateUtilityClasses("PrivateSwitchBase", ["root", "checked", "disabled", "input", "edgeStart", "edgeEnd"]);
6662
- const useUtilityClasses$C = (ownerState) => {
6662
+ const useUtilityClasses$E = (ownerState) => {
6663
6663
  const {
6664
6664
  classes,
6665
6665
  checked,
@@ -6796,7 +6796,7 @@ const SwitchBase = /* @__PURE__ */ reactExports.forwardRef(function SwitchBase2(
6796
6796
  disableFocusRipple,
6797
6797
  edge
6798
6798
  };
6799
- const classes = useUtilityClasses$C(ownerState);
6799
+ const classes = useUtilityClasses$E(ownerState);
6800
6800
  const externalForwardedProps = {
6801
6801
  slots,
6802
6802
  slotProps: {
@@ -7540,7 +7540,7 @@ function getModalUtilityClass(slot) {
7540
7540
  return generateUtilityClass("MuiModal", slot);
7541
7541
  }
7542
7542
  generateUtilityClasses("MuiModal", ["root", "hidden", "backdrop"]);
7543
- const useUtilityClasses$B = (ownerState) => {
7543
+ const useUtilityClasses$D = (ownerState) => {
7544
7544
  const {
7545
7545
  open,
7546
7546
  exited,
@@ -7651,7 +7651,7 @@ const Modal = /* @__PURE__ */ reactExports.forwardRef(function Modal2(inProps, r
7651
7651
  ...propsWithDefaults,
7652
7652
  exited
7653
7653
  };
7654
- const classes = useUtilityClasses$B(ownerState);
7654
+ const classes = useUtilityClasses$D(ownerState);
7655
7655
  const childProps = {};
7656
7656
  if (children.props.tabIndex === void 0) {
7657
7657
  childProps.tabIndex = "-1";
@@ -7744,7 +7744,7 @@ const DialogBackdrop = styled$1(Backdrop, {
7744
7744
  // Improve scrollable dialog support.
7745
7745
  zIndex: -1
7746
7746
  });
7747
- const useUtilityClasses$A = (ownerState) => {
7747
+ const useUtilityClasses$C = (ownerState) => {
7748
7748
  const {
7749
7749
  classes,
7750
7750
  scroll,
@@ -7949,7 +7949,7 @@ const Dialog = /* @__PURE__ */ reactExports.forwardRef(function Dialog2(inProps,
7949
7949
  maxWidth,
7950
7950
  scroll
7951
7951
  };
7952
- const classes = useUtilityClasses$A(ownerState);
7952
+ const classes = useUtilityClasses$C(ownerState);
7953
7953
  const backdropClick = reactExports.useRef();
7954
7954
  const handleMouseDown = (event) => {
7955
7955
  backdropClick.current = event.target === event.currentTarget;
@@ -8071,7 +8071,7 @@ function getDialogActionsUtilityClass(slot) {
8071
8071
  return generateUtilityClass("MuiDialogActions", slot);
8072
8072
  }
8073
8073
  generateUtilityClasses("MuiDialogActions", ["root", "spacing"]);
8074
- const useUtilityClasses$z = (ownerState) => {
8074
+ const useUtilityClasses$B = (ownerState) => {
8075
8075
  const {
8076
8076
  classes,
8077
8077
  disableSpacing
@@ -8121,7 +8121,7 @@ const DialogActions = /* @__PURE__ */ reactExports.forwardRef(function DialogAct
8121
8121
  ...props,
8122
8122
  disableSpacing
8123
8123
  };
8124
- const classes = useUtilityClasses$z(ownerState);
8124
+ const classes = useUtilityClasses$B(ownerState);
8125
8125
  return /* @__PURE__ */ jsxRuntimeExports.jsx(DialogActionsRoot, {
8126
8126
  className: clsx(classes.root, className),
8127
8127
  ownerState,
@@ -8137,7 +8137,7 @@ function getDialogTitleUtilityClass(slot) {
8137
8137
  return generateUtilityClass("MuiDialogTitle", slot);
8138
8138
  }
8139
8139
  const dialogTitleClasses = generateUtilityClasses("MuiDialogTitle", ["root"]);
8140
- const useUtilityClasses$y = (ownerState) => {
8140
+ const useUtilityClasses$A = (ownerState) => {
8141
8141
  const {
8142
8142
  classes,
8143
8143
  dividers
@@ -8198,7 +8198,7 @@ const DialogContent = /* @__PURE__ */ reactExports.forwardRef(function DialogCon
8198
8198
  ...props,
8199
8199
  dividers
8200
8200
  };
8201
- const classes = useUtilityClasses$y(ownerState);
8201
+ const classes = useUtilityClasses$A(ownerState);
8202
8202
  return /* @__PURE__ */ jsxRuntimeExports.jsx(DialogContentRoot, {
8203
8203
  className: clsx(classes.root, className),
8204
8204
  ownerState,
@@ -8210,7 +8210,7 @@ function getDialogContentTextUtilityClass(slot) {
8210
8210
  return generateUtilityClass("MuiDialogContentText", slot);
8211
8211
  }
8212
8212
  generateUtilityClasses("MuiDialogContentText", ["root"]);
8213
- const useUtilityClasses$x = (ownerState) => {
8213
+ const useUtilityClasses$z = (ownerState) => {
8214
8214
  const {
8215
8215
  classes
8216
8216
  } = ownerState;
@@ -8240,7 +8240,7 @@ const DialogContentText = /* @__PURE__ */ reactExports.forwardRef(function Dialo
8240
8240
  className,
8241
8241
  ...ownerState
8242
8242
  } = props;
8243
- const classes = useUtilityClasses$x(ownerState);
8243
+ const classes = useUtilityClasses$z(ownerState);
8244
8244
  return /* @__PURE__ */ jsxRuntimeExports.jsx(DialogContentTextRoot, {
8245
8245
  component: "p",
8246
8246
  variant: "body1",
@@ -8252,7 +8252,7 @@ const DialogContentText = /* @__PURE__ */ reactExports.forwardRef(function Dialo
8252
8252
  classes
8253
8253
  });
8254
8254
  });
8255
- const useUtilityClasses$w = (ownerState) => {
8255
+ const useUtilityClasses$y = (ownerState) => {
8256
8256
  const {
8257
8257
  classes
8258
8258
  } = ownerState;
@@ -8280,7 +8280,7 @@ const DialogTitle = /* @__PURE__ */ reactExports.forwardRef(function DialogTitle
8280
8280
  ...other
8281
8281
  } = props;
8282
8282
  const ownerState = props;
8283
- const classes = useUtilityClasses$w(ownerState);
8283
+ const classes = useUtilityClasses$y(ownerState);
8284
8284
  const {
8285
8285
  titleId = idProp
8286
8286
  } = reactExports.useContext(DialogContext);
@@ -8298,7 +8298,7 @@ function getDividerUtilityClass(slot) {
8298
8298
  return generateUtilityClass("MuiDivider", slot);
8299
8299
  }
8300
8300
  const dividerClasses = generateUtilityClasses("MuiDivider", ["root", "absolute", "fullWidth", "inset", "middle", "flexItem", "light", "vertical", "withChildren", "withChildrenVertical", "textAlignRight", "textAlignLeft", "wrapper", "wrapperVertical"]);
8301
- const useUtilityClasses$v = (ownerState) => {
8301
+ const useUtilityClasses$x = (ownerState) => {
8302
8302
  const {
8303
8303
  absolute,
8304
8304
  children,
@@ -8512,7 +8512,7 @@ const Divider = /* @__PURE__ */ reactExports.forwardRef(function Divider2(inProp
8512
8512
  textAlign,
8513
8513
  variant
8514
8514
  };
8515
- const classes = useUtilityClasses$v(ownerState);
8515
+ const classes = useUtilityClasses$x(ownerState);
8516
8516
  return /* @__PURE__ */ jsxRuntimeExports.jsx(DividerRoot, {
8517
8517
  as: component,
8518
8518
  className: clsx(classes.root, className),
@@ -8745,7 +8745,7 @@ const overridesResolver$4 = (props, styles2) => {
8745
8745
  } = props;
8746
8746
  return [styles2.root, (ownerState.variant === "permanent" || ownerState.variant === "persistent") && styles2.docked, styles2.modal];
8747
8747
  };
8748
- const useUtilityClasses$u = (ownerState) => {
8748
+ const useUtilityClasses$w = (ownerState) => {
8749
8749
  const {
8750
8750
  classes,
8751
8751
  anchor,
@@ -8935,7 +8935,7 @@ const Drawer = /* @__PURE__ */ reactExports.forwardRef(function Drawer2(inProps,
8935
8935
  variant,
8936
8936
  ...other
8937
8937
  };
8938
- const classes = useUtilityClasses$u(ownerState);
8938
+ const classes = useUtilityClasses$w(ownerState);
8939
8939
  const externalForwardedProps = {
8940
8940
  slots: {
8941
8941
  transition: TransitionComponent,
@@ -9032,7 +9032,7 @@ const Drawer = /* @__PURE__ */ reactExports.forwardRef(function Drawer2(inProps,
9032
9032
  children: slidingDrawer
9033
9033
  });
9034
9034
  });
9035
- const useUtilityClasses$t = (ownerState) => {
9035
+ const useUtilityClasses$v = (ownerState) => {
9036
9036
  const {
9037
9037
  classes,
9038
9038
  disableUnderline,
@@ -9311,7 +9311,7 @@ const FilledInput = /* @__PURE__ */ reactExports.forwardRef(function FilledInput
9311
9311
  multiline,
9312
9312
  type
9313
9313
  };
9314
- const classes = useUtilityClasses$t(props);
9314
+ const classes = useUtilityClasses$v(props);
9315
9315
  const filledInputComponentsProps = {
9316
9316
  root: {
9317
9317
  ownerState
@@ -9343,7 +9343,7 @@ function getFormControlUtilityClasses(slot) {
9343
9343
  return generateUtilityClass("MuiFormControl", slot);
9344
9344
  }
9345
9345
  generateUtilityClasses("MuiFormControl", ["root", "marginNone", "marginNormal", "marginDense", "fullWidth", "disabled"]);
9346
- const useUtilityClasses$s = (ownerState) => {
9346
+ const useUtilityClasses$u = (ownerState) => {
9347
9347
  const {
9348
9348
  classes,
9349
9349
  margin,
@@ -9433,7 +9433,7 @@ const FormControl = /* @__PURE__ */ reactExports.forwardRef(function FormControl
9433
9433
  size,
9434
9434
  variant
9435
9435
  };
9436
- const classes = useUtilityClasses$s(ownerState);
9436
+ const classes = useUtilityClasses$u(ownerState);
9437
9437
  const [adornedStart, setAdornedStart] = reactExports.useState(() => {
9438
9438
  let initialAdornedStart = false;
9439
9439
  if (children) {
@@ -9518,7 +9518,7 @@ function getFormHelperTextUtilityClasses(slot) {
9518
9518
  }
9519
9519
  const formHelperTextClasses = generateUtilityClasses("MuiFormHelperText", ["root", "error", "disabled", "sizeSmall", "sizeMedium", "contained", "focused", "filled", "required"]);
9520
9520
  var _span$3;
9521
- const useUtilityClasses$r = (ownerState) => {
9521
+ const useUtilityClasses$t = (ownerState) => {
9522
9522
  const {
9523
9523
  classes,
9524
9524
  contained,
@@ -9613,7 +9613,7 @@ const FormHelperText = /* @__PURE__ */ reactExports.forwardRef(function FormHelp
9613
9613
  required: fcs.required
9614
9614
  };
9615
9615
  delete ownerState.ownerState;
9616
- const classes = useUtilityClasses$r(ownerState);
9616
+ const classes = useUtilityClasses$t(ownerState);
9617
9617
  return /* @__PURE__ */ jsxRuntimeExports.jsx(FormHelperTextRoot, {
9618
9618
  as: component,
9619
9619
  className: clsx(classes.root, className),
@@ -9634,7 +9634,7 @@ function getFormLabelUtilityClasses(slot) {
9634
9634
  return generateUtilityClass("MuiFormLabel", slot);
9635
9635
  }
9636
9636
  const formLabelClasses = generateUtilityClasses("MuiFormLabel", ["root", "colorSecondary", "focused", "disabled", "error", "filled", "required", "asterisk"]);
9637
- const useUtilityClasses$q = (ownerState) => {
9637
+ const useUtilityClasses$s = (ownerState) => {
9638
9638
  const {
9639
9639
  classes,
9640
9640
  color: color2,
@@ -9732,7 +9732,7 @@ const FormLabel = /* @__PURE__ */ reactExports.forwardRef(function FormLabel2(in
9732
9732
  focused: fcs.focused,
9733
9733
  required: fcs.required
9734
9734
  };
9735
- const classes = useUtilityClasses$q(ownerState);
9735
+ const classes = useUtilityClasses$s(ownerState);
9736
9736
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(FormLabelRoot, {
9737
9737
  as: component,
9738
9738
  ownerState,
@@ -10060,7 +10060,7 @@ function resolveSpacingClasses(spacing, breakpoints) {
10060
10060
  });
10061
10061
  return classes;
10062
10062
  }
10063
- const useUtilityClasses$p = (ownerState) => {
10063
+ const useUtilityClasses$r = (ownerState) => {
10064
10064
  const {
10065
10065
  classes,
10066
10066
  container,
@@ -10138,7 +10138,7 @@ const Grid = /* @__PURE__ */ reactExports.forwardRef(function Grid2(inProps, ref
10138
10138
  ...breakpointsValues,
10139
10139
  breakpoints: breakpoints.keys
10140
10140
  };
10141
- const classes = useUtilityClasses$p(ownerState);
10141
+ const classes = useUtilityClasses$r(ownerState);
10142
10142
  return /* @__PURE__ */ jsxRuntimeExports.jsx(GridContext.Provider, {
10143
10143
  value: columns,
10144
10144
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(GridRoot, {
@@ -10310,7 +10310,7 @@ const Grow = /* @__PURE__ */ reactExports.forwardRef(function Grow2(props, ref)
10310
10310
  if (Grow) {
10311
10311
  Grow.muiSupportAuto = true;
10312
10312
  }
10313
- const useUtilityClasses$o = (ownerState) => {
10313
+ const useUtilityClasses$q = (ownerState) => {
10314
10314
  const {
10315
10315
  classes,
10316
10316
  disableUnderline
@@ -10443,7 +10443,7 @@ const Input = /* @__PURE__ */ reactExports.forwardRef(function Input2(inProps, r
10443
10443
  type = "text",
10444
10444
  ...other
10445
10445
  } = props;
10446
- const classes = useUtilityClasses$o(props);
10446
+ const classes = useUtilityClasses$q(props);
10447
10447
  const ownerState = {
10448
10448
  disableUnderline
10449
10449
  };
@@ -10482,7 +10482,7 @@ const overridesResolver$3 = (props, styles2) => {
10482
10482
  } = props;
10483
10483
  return [styles2.root, styles2[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles2.disablePointerEvents, styles2[ownerState.variant]];
10484
10484
  };
10485
- const useUtilityClasses$n = (ownerState) => {
10485
+ const useUtilityClasses$p = (ownerState) => {
10486
10486
  const {
10487
10487
  classes,
10488
10488
  disablePointerEvents,
@@ -10569,7 +10569,7 @@ const InputAdornment = /* @__PURE__ */ reactExports.forwardRef(function InputAdo
10569
10569
  position: position2,
10570
10570
  variant
10571
10571
  };
10572
- const classes = useUtilityClasses$n(ownerState);
10572
+ const classes = useUtilityClasses$p(ownerState);
10573
10573
  return /* @__PURE__ */ jsxRuntimeExports.jsx(FormControlContext.Provider, {
10574
10574
  value: null,
10575
10575
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(InputAdornmentRoot, {
@@ -10598,7 +10598,7 @@ function getInputLabelUtilityClasses(slot) {
10598
10598
  return generateUtilityClass("MuiInputLabel", slot);
10599
10599
  }
10600
10600
  generateUtilityClasses("MuiInputLabel", ["root", "focused", "disabled", "error", "required", "asterisk", "formControl", "sizeSmall", "shrink", "animated", "standard", "filled", "outlined"]);
10601
- const useUtilityClasses$m = (ownerState) => {
10601
+ const useUtilityClasses$o = (ownerState) => {
10602
10602
  const {
10603
10603
  classes,
10604
10604
  formControl,
@@ -10787,7 +10787,7 @@ const InputLabel = /* @__PURE__ */ reactExports.forwardRef(function InputLabel2(
10787
10787
  required: fcs.required,
10788
10788
  focused: fcs.focused
10789
10789
  };
10790
- const classes = useUtilityClasses$m(ownerState);
10790
+ const classes = useUtilityClasses$o(ownerState);
10791
10791
  return /* @__PURE__ */ jsxRuntimeExports.jsx(InputLabelRoot, {
10792
10792
  "data-shrink": shrink,
10793
10793
  ref,
@@ -10824,7 +10824,7 @@ const v6Colors = {
10824
10824
  textSecondary: true,
10825
10825
  textDisabled: true
10826
10826
  };
10827
- const useUtilityClasses$l = (ownerState) => {
10827
+ const useUtilityClasses$n = (ownerState) => {
10828
10828
  const {
10829
10829
  classes,
10830
10830
  component,
@@ -10994,7 +10994,7 @@ const Link = /* @__PURE__ */ reactExports.forwardRef(function Link2(inProps, ref
10994
10994
  underline,
10995
10995
  variant
10996
10996
  };
10997
- const classes = useUtilityClasses$l(ownerState);
10997
+ const classes = useUtilityClasses$n(ownerState);
10998
10998
  return /* @__PURE__ */ jsxRuntimeExports.jsx(LinkRoot, {
10999
10999
  color: color2,
11000
11000
  className: clsx(classes.root, className),
@@ -11025,7 +11025,7 @@ function getListUtilityClass(slot) {
11025
11025
  return generateUtilityClass("MuiList", slot);
11026
11026
  }
11027
11027
  generateUtilityClasses("MuiList", ["root", "padding", "dense", "subheader"]);
11028
- const useUtilityClasses$k = (ownerState) => {
11028
+ const useUtilityClasses$m = (ownerState) => {
11029
11029
  const {
11030
11030
  classes,
11031
11031
  disablePadding,
@@ -11091,7 +11091,7 @@ const List$1 = /* @__PURE__ */ reactExports.forwardRef(function List2(inProps, r
11091
11091
  dense,
11092
11092
  disablePadding
11093
11093
  };
11094
- const classes = useUtilityClasses$k(ownerState);
11094
+ const classes = useUtilityClasses$m(ownerState);
11095
11095
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ListContext.Provider, {
11096
11096
  value: context,
11097
11097
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs(ListRoot, {
@@ -11118,7 +11118,7 @@ const overridesResolver$2 = (props, styles2) => {
11118
11118
  } = props;
11119
11119
  return [styles2.root, ownerState.dense && styles2.dense, ownerState.alignItems === "flex-start" && styles2.alignItemsFlexStart, ownerState.divider && styles2.divider, !ownerState.disableGutters && styles2.gutters];
11120
11120
  };
11121
- const useUtilityClasses$j = (ownerState) => {
11121
+ const useUtilityClasses$l = (ownerState) => {
11122
11122
  const {
11123
11123
  alignItems,
11124
11124
  classes,
@@ -11259,7 +11259,7 @@ const ListItemButton = /* @__PURE__ */ reactExports.forwardRef(function ListItem
11259
11259
  divider,
11260
11260
  selected
11261
11261
  };
11262
- const classes = useUtilityClasses$j(ownerState);
11262
+ const classes = useUtilityClasses$l(ownerState);
11263
11263
  const handleRef = useForkRef(listItemRef, ref);
11264
11264
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ListContext.Provider, {
11265
11265
  value: childContext,
@@ -11280,7 +11280,7 @@ function getListItemSecondaryActionClassesUtilityClass(slot) {
11280
11280
  return generateUtilityClass("MuiListItemSecondaryAction", slot);
11281
11281
  }
11282
11282
  generateUtilityClasses("MuiListItemSecondaryAction", ["root", "disableGutters"]);
11283
- const useUtilityClasses$i = (ownerState) => {
11283
+ const useUtilityClasses$k = (ownerState) => {
11284
11284
  const {
11285
11285
  disableGutters,
11286
11286
  classes
@@ -11327,7 +11327,7 @@ const ListItemSecondaryAction = /* @__PURE__ */ reactExports.forwardRef(function
11327
11327
  ...props,
11328
11328
  disableGutters: context.disableGutters
11329
11329
  };
11330
- const classes = useUtilityClasses$i(ownerState);
11330
+ const classes = useUtilityClasses$k(ownerState);
11331
11331
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemSecondaryActionRoot, {
11332
11332
  className: clsx(classes.root, className),
11333
11333
  ownerState,
@@ -11342,7 +11342,7 @@ const overridesResolver$1 = (props, styles2) => {
11342
11342
  } = props;
11343
11343
  return [styles2.root, ownerState.dense && styles2.dense, ownerState.alignItems === "flex-start" && styles2.alignItemsFlexStart, ownerState.divider && styles2.divider, !ownerState.disableGutters && styles2.gutters, !ownerState.disablePadding && styles2.padding, ownerState.hasSecondaryAction && styles2.secondaryAction];
11344
11344
  };
11345
- const useUtilityClasses$h = (ownerState) => {
11345
+ const useUtilityClasses$j = (ownerState) => {
11346
11346
  const {
11347
11347
  alignItems,
11348
11348
  classes,
@@ -11509,7 +11509,7 @@ const ListItem = /* @__PURE__ */ reactExports.forwardRef(function ListItem2(inPr
11509
11509
  divider,
11510
11510
  hasSecondaryAction
11511
11511
  };
11512
- const classes = useUtilityClasses$h(ownerState);
11512
+ const classes = useUtilityClasses$j(ownerState);
11513
11513
  const handleRef = useForkRef(listItemRef, ref);
11514
11514
  const Root = slots.root || components.Root || ListItemRoot;
11515
11515
  const rootProps = slotProps.root || componentsProps.root || {};
@@ -11573,7 +11573,7 @@ function getListItemAvatarUtilityClass(slot) {
11573
11573
  return generateUtilityClass("MuiListItemAvatar", slot);
11574
11574
  }
11575
11575
  generateUtilityClasses("MuiListItemAvatar", ["root", "alignItemsFlexStart"]);
11576
- const useUtilityClasses$g = (ownerState) => {
11576
+ const useUtilityClasses$i = (ownerState) => {
11577
11577
  const {
11578
11578
  alignItems,
11579
11579
  classes
@@ -11618,7 +11618,7 @@ const ListItemAvatar = /* @__PURE__ */ reactExports.forwardRef(function ListItem
11618
11618
  ...props,
11619
11619
  alignItems: context.alignItems
11620
11620
  };
11621
- const classes = useUtilityClasses$g(ownerState);
11621
+ const classes = useUtilityClasses$i(ownerState);
11622
11622
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemAvatarRoot, {
11623
11623
  className: clsx(classes.root, className),
11624
11624
  ownerState,
@@ -11630,7 +11630,7 @@ function getListItemIconUtilityClass(slot) {
11630
11630
  return generateUtilityClass("MuiListItemIcon", slot);
11631
11631
  }
11632
11632
  const listItemIconClasses = generateUtilityClasses("MuiListItemIcon", ["root", "alignItemsFlexStart"]);
11633
- const useUtilityClasses$f = (ownerState) => {
11633
+ const useUtilityClasses$h = (ownerState) => {
11634
11634
  const {
11635
11635
  alignItems,
11636
11636
  classes
@@ -11679,7 +11679,7 @@ const ListItemIcon = /* @__PURE__ */ reactExports.forwardRef(function ListItemIc
11679
11679
  ...props,
11680
11680
  alignItems: context.alignItems
11681
11681
  };
11682
- const classes = useUtilityClasses$f(ownerState);
11682
+ const classes = useUtilityClasses$h(ownerState);
11683
11683
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemIconRoot, {
11684
11684
  className: clsx(classes.root, className),
11685
11685
  ownerState,
@@ -11691,7 +11691,7 @@ function getListItemTextUtilityClass(slot) {
11691
11691
  return generateUtilityClass("MuiListItemText", slot);
11692
11692
  }
11693
11693
  const listItemTextClasses = generateUtilityClasses("MuiListItemText", ["root", "multiline", "dense", "inset", "primary", "secondary"]);
11694
- const useUtilityClasses$e = (ownerState) => {
11694
+ const useUtilityClasses$g = (ownerState) => {
11695
11695
  const {
11696
11696
  classes,
11697
11697
  inset,
@@ -11778,7 +11778,7 @@ const ListItemText = /* @__PURE__ */ reactExports.forwardRef(function ListItemTe
11778
11778
  secondary: !!secondary,
11779
11779
  dense
11780
11780
  };
11781
- const classes = useUtilityClasses$e(ownerState);
11781
+ const classes = useUtilityClasses$g(ownerState);
11782
11782
  const externalForwardedProps = {
11783
11783
  slots,
11784
11784
  slotProps: {
@@ -12048,7 +12048,7 @@ function getTransformOriginValue(transformOrigin) {
12048
12048
  function resolveAnchorEl(anchorEl) {
12049
12049
  return typeof anchorEl === "function" ? anchorEl() : anchorEl;
12050
12050
  }
12051
- const useUtilityClasses$d = (ownerState) => {
12051
+ const useUtilityClasses$f = (ownerState) => {
12052
12052
  const {
12053
12053
  classes
12054
12054
  } = ownerState;
@@ -12128,7 +12128,7 @@ const Popover = /* @__PURE__ */ reactExports.forwardRef(function Popover2(inProp
12128
12128
  transitionDuration: transitionDurationProp,
12129
12129
  TransitionProps
12130
12130
  };
12131
- const classes = useUtilityClasses$d(ownerState);
12131
+ const classes = useUtilityClasses$f(ownerState);
12132
12132
  const getAnchorOffset = reactExports.useCallback(() => {
12133
12133
  if (anchorReference === "anchorPosition") {
12134
12134
  return anchorPosition;
@@ -12350,7 +12350,7 @@ const LTR_ORIGIN = {
12350
12350
  vertical: "top",
12351
12351
  horizontal: "left"
12352
12352
  };
12353
- const useUtilityClasses$c = (ownerState) => {
12353
+ const useUtilityClasses$e = (ownerState) => {
12354
12354
  const {
12355
12355
  classes
12356
12356
  } = ownerState;
@@ -12424,7 +12424,7 @@ const Menu = /* @__PURE__ */ reactExports.forwardRef(function Menu2(inProps, ref
12424
12424
  TransitionProps,
12425
12425
  variant
12426
12426
  };
12427
- const classes = useUtilityClasses$c(ownerState);
12427
+ const classes = useUtilityClasses$e(ownerState);
12428
12428
  const autoFocusItem = autoFocus && !disableAutoFocusItem && open;
12429
12429
  const menuListActionsRef = reactExports.useRef(null);
12430
12430
  const handleEntering = (element2, isAppearing) => {
@@ -12549,7 +12549,7 @@ const overridesResolver = (props, styles2) => {
12549
12549
  } = props;
12550
12550
  return [styles2.root, ownerState.dense && styles2.dense, ownerState.divider && styles2.divider, !ownerState.disableGutters && styles2.gutters];
12551
12551
  };
12552
- const useUtilityClasses$b = (ownerState) => {
12552
+ const useUtilityClasses$d = (ownerState) => {
12553
12553
  const {
12554
12554
  disabled,
12555
12555
  dense,
@@ -12707,7 +12707,7 @@ const MenuItem = /* @__PURE__ */ reactExports.forwardRef(function MenuItem2(inPr
12707
12707
  divider,
12708
12708
  disableGutters
12709
12709
  };
12710
- const classes = useUtilityClasses$b(props);
12710
+ const classes = useUtilityClasses$d(props);
12711
12711
  const handleRef = useForkRef(menuItemRef, ref);
12712
12712
  let tabIndex;
12713
12713
  if (!props.disabled) {
@@ -12732,7 +12732,7 @@ function getNativeSelectUtilityClasses(slot) {
12732
12732
  return generateUtilityClass("MuiNativeSelect", slot);
12733
12733
  }
12734
12734
  const nativeSelectClasses = generateUtilityClasses("MuiNativeSelect", ["root", "select", "multiple", "filled", "outlined", "standard", "disabled", "icon", "iconOpen", "iconFilled", "iconOutlined", "iconStandard", "nativeInput", "error"]);
12735
- const useUtilityClasses$a = (ownerState) => {
12735
+ const useUtilityClasses$c = (ownerState) => {
12736
12736
  const {
12737
12737
  classes,
12738
12738
  variant,
@@ -12887,7 +12887,7 @@ const NativeSelectInput = /* @__PURE__ */ reactExports.forwardRef(function Nativ
12887
12887
  variant,
12888
12888
  error
12889
12889
  };
12890
- const classes = useUtilityClasses$a(ownerState);
12890
+ const classes = useUtilityClasses$c(ownerState);
12891
12891
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(reactExports.Fragment, {
12892
12892
  children: [/* @__PURE__ */ jsxRuntimeExports.jsx(NativeSelectSelect, {
12893
12893
  ownerState,
@@ -13020,7 +13020,7 @@ function NotchedOutline(props) {
13020
13020
  })
13021
13021
  });
13022
13022
  }
13023
- const useUtilityClasses$9 = (ownerState) => {
13023
+ const useUtilityClasses$b = (ownerState) => {
13024
13024
  const {
13025
13025
  classes
13026
13026
  } = ownerState;
@@ -13199,7 +13199,7 @@ const OutlinedInput = /* @__PURE__ */ reactExports.forwardRef(function OutlinedI
13199
13199
  type = "text",
13200
13200
  ...other
13201
13201
  } = props;
13202
- const classes = useUtilityClasses$9(props);
13202
+ const classes = useUtilityClasses$b(props);
13203
13203
  const muiFormControl = useFormControl();
13204
13204
  const fcs = formControlState({
13205
13205
  props,
@@ -13320,7 +13320,7 @@ function areEqualValues(a, b2) {
13320
13320
  function isEmpty(display) {
13321
13321
  return display == null || typeof display === "string" && !display.trim();
13322
13322
  }
13323
- const useUtilityClasses$8 = (ownerState) => {
13323
+ const useUtilityClasses$a = (ownerState) => {
13324
13324
  const {
13325
13325
  classes,
13326
13326
  variant,
@@ -13622,7 +13622,7 @@ const SelectInput = /* @__PURE__ */ reactExports.forwardRef(function SelectInput
13622
13622
  open,
13623
13623
  error
13624
13624
  };
13625
- const classes = useUtilityClasses$8(ownerState);
13625
+ const classes = useUtilityClasses$a(ownerState);
13626
13626
  const paperProps = {
13627
13627
  ...MenuProps.PaperProps,
13628
13628
  ...MenuProps.slotProps?.paper
@@ -13713,7 +13713,7 @@ const SelectInput = /* @__PURE__ */ reactExports.forwardRef(function SelectInput
13713
13713
  })]
13714
13714
  });
13715
13715
  });
13716
- const useUtilityClasses$7 = (ownerState) => {
13716
+ const useUtilityClasses$9 = (ownerState) => {
13717
13717
  const {
13718
13718
  classes
13719
13719
  } = ownerState;
@@ -13777,7 +13777,7 @@ const Select = /* @__PURE__ */ reactExports.forwardRef(function Select2(inProps,
13777
13777
  variant,
13778
13778
  classes: classesProp
13779
13779
  };
13780
- const classes = useUtilityClasses$7(ownerState);
13780
+ const classes = useUtilityClasses$9(ownerState);
13781
13781
  const {
13782
13782
  root: root2,
13783
13783
  ...restOfClasses
@@ -15010,7 +15010,7 @@ const SliderMarkLabel = styled$1("span", {
15010
15010
  }
15011
15011
  }]
15012
15012
  })));
15013
- const useUtilityClasses$6 = (ownerState) => {
15013
+ const useUtilityClasses$8 = (ownerState) => {
15014
15014
  const {
15015
15015
  disabled,
15016
15016
  dragging,
@@ -15123,7 +15123,7 @@ const Slider = /* @__PURE__ */ reactExports.forwardRef(function Slider2(inputPro
15123
15123
  ownerState.marked = marks.length > 0 && marks.some((mark2) => mark2.label);
15124
15124
  ownerState.dragging = dragging;
15125
15125
  ownerState.focusedThumbIndex = focusedThumbIndex;
15126
- const classes = useUtilityClasses$6(ownerState);
15126
+ const classes = useUtilityClasses$8(ownerState);
15127
15127
  const RootSlot = slots?.root ?? components.Root ?? SliderRoot;
15128
15128
  const RailSlot = slots?.rail ?? components.Rail ?? SliderRail;
15129
15129
  const TrackSlot = slots?.track ?? components.Track ?? SliderTrack;
@@ -15296,6 +15296,445 @@ const Slider = /* @__PURE__ */ reactExports.forwardRef(function Slider2(inputPro
15296
15296
  })]
15297
15297
  });
15298
15298
  });
15299
+ function useSnackbar(parameters = {}) {
15300
+ const {
15301
+ autoHideDuration = null,
15302
+ disableWindowBlurListener = false,
15303
+ onClose,
15304
+ open,
15305
+ resumeHideDuration
15306
+ } = parameters;
15307
+ const timerAutoHide = useTimeout();
15308
+ reactExports.useEffect(() => {
15309
+ if (!open) {
15310
+ return void 0;
15311
+ }
15312
+ function handleKeyDown(nativeEvent) {
15313
+ if (!nativeEvent.defaultPrevented) {
15314
+ if (nativeEvent.key === "Escape") {
15315
+ onClose?.(nativeEvent, "escapeKeyDown");
15316
+ }
15317
+ }
15318
+ }
15319
+ document.addEventListener("keydown", handleKeyDown);
15320
+ return () => {
15321
+ document.removeEventListener("keydown", handleKeyDown);
15322
+ };
15323
+ }, [open, onClose]);
15324
+ const handleClose = useEventCallback((event, reason) => {
15325
+ onClose?.(event, reason);
15326
+ });
15327
+ const setAutoHideTimer = useEventCallback((autoHideDurationParam) => {
15328
+ if (!onClose || autoHideDurationParam == null) {
15329
+ return;
15330
+ }
15331
+ timerAutoHide.start(autoHideDurationParam, () => {
15332
+ handleClose(null, "timeout");
15333
+ });
15334
+ });
15335
+ reactExports.useEffect(() => {
15336
+ if (open) {
15337
+ setAutoHideTimer(autoHideDuration);
15338
+ }
15339
+ return timerAutoHide.clear;
15340
+ }, [open, autoHideDuration, setAutoHideTimer, timerAutoHide]);
15341
+ const handleClickAway = (event) => {
15342
+ onClose?.(event, "clickaway");
15343
+ };
15344
+ const handlePause = timerAutoHide.clear;
15345
+ const handleResume = reactExports.useCallback(() => {
15346
+ if (autoHideDuration != null) {
15347
+ setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);
15348
+ }
15349
+ }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);
15350
+ const createHandleBlur = (otherHandlers) => (event) => {
15351
+ const onBlurCallback = otherHandlers.onBlur;
15352
+ onBlurCallback?.(event);
15353
+ handleResume();
15354
+ };
15355
+ const createHandleFocus = (otherHandlers) => (event) => {
15356
+ const onFocusCallback = otherHandlers.onFocus;
15357
+ onFocusCallback?.(event);
15358
+ handlePause();
15359
+ };
15360
+ const createMouseEnter = (otherHandlers) => (event) => {
15361
+ const onMouseEnterCallback = otherHandlers.onMouseEnter;
15362
+ onMouseEnterCallback?.(event);
15363
+ handlePause();
15364
+ };
15365
+ const createMouseLeave = (otherHandlers) => (event) => {
15366
+ const onMouseLeaveCallback = otherHandlers.onMouseLeave;
15367
+ onMouseLeaveCallback?.(event);
15368
+ handleResume();
15369
+ };
15370
+ reactExports.useEffect(() => {
15371
+ if (!disableWindowBlurListener && open) {
15372
+ window.addEventListener("focus", handleResume);
15373
+ window.addEventListener("blur", handlePause);
15374
+ return () => {
15375
+ window.removeEventListener("focus", handleResume);
15376
+ window.removeEventListener("blur", handlePause);
15377
+ };
15378
+ }
15379
+ return void 0;
15380
+ }, [disableWindowBlurListener, open, handleResume, handlePause]);
15381
+ const getRootProps = (externalProps = {}) => {
15382
+ const externalEventHandlers = {
15383
+ ...extractEventHandlers(parameters),
15384
+ ...extractEventHandlers(externalProps)
15385
+ };
15386
+ return {
15387
+ // ClickAwayListener adds an `onClick` prop which results in the alert not being announced.
15388
+ // See https://github.com/mui/material-ui/issues/29080
15389
+ role: "presentation",
15390
+ ...externalProps,
15391
+ ...externalEventHandlers,
15392
+ onBlur: createHandleBlur(externalEventHandlers),
15393
+ onFocus: createHandleFocus(externalEventHandlers),
15394
+ onMouseEnter: createMouseEnter(externalEventHandlers),
15395
+ onMouseLeave: createMouseLeave(externalEventHandlers)
15396
+ };
15397
+ };
15398
+ return {
15399
+ getRootProps,
15400
+ onClickAway: handleClickAway
15401
+ };
15402
+ }
15403
+ function getSnackbarContentUtilityClass(slot) {
15404
+ return generateUtilityClass("MuiSnackbarContent", slot);
15405
+ }
15406
+ generateUtilityClasses("MuiSnackbarContent", ["root", "message", "action"]);
15407
+ const useUtilityClasses$7 = (ownerState) => {
15408
+ const {
15409
+ classes
15410
+ } = ownerState;
15411
+ const slots = {
15412
+ root: ["root"],
15413
+ action: ["action"],
15414
+ message: ["message"]
15415
+ };
15416
+ return composeClasses(slots, getSnackbarContentUtilityClass, classes);
15417
+ };
15418
+ const SnackbarContentRoot = styled$1(Paper, {
15419
+ name: "MuiSnackbarContent",
15420
+ slot: "Root",
15421
+ overridesResolver: (props, styles2) => styles2.root
15422
+ })(memoTheme(({
15423
+ theme: theme2
15424
+ }) => {
15425
+ const emphasis2 = theme2.palette.mode === "light" ? 0.8 : 0.98;
15426
+ const backgroundColor = emphasize(theme2.palette.background.default, emphasis2);
15427
+ return {
15428
+ ...theme2.typography.body2,
15429
+ color: theme2.vars ? theme2.vars.palette.SnackbarContent.color : theme2.palette.getContrastText(backgroundColor),
15430
+ backgroundColor: theme2.vars ? theme2.vars.palette.SnackbarContent.bg : backgroundColor,
15431
+ display: "flex",
15432
+ alignItems: "center",
15433
+ flexWrap: "wrap",
15434
+ padding: "6px 16px",
15435
+ borderRadius: (theme2.vars || theme2).shape.borderRadius,
15436
+ flexGrow: 1,
15437
+ [theme2.breakpoints.up("sm")]: {
15438
+ flexGrow: "initial",
15439
+ minWidth: 288
15440
+ }
15441
+ };
15442
+ }));
15443
+ const SnackbarContentMessage = styled$1("div", {
15444
+ name: "MuiSnackbarContent",
15445
+ slot: "Message",
15446
+ overridesResolver: (props, styles2) => styles2.message
15447
+ })({
15448
+ padding: "8px 0"
15449
+ });
15450
+ const SnackbarContentAction = styled$1("div", {
15451
+ name: "MuiSnackbarContent",
15452
+ slot: "Action",
15453
+ overridesResolver: (props, styles2) => styles2.action
15454
+ })({
15455
+ display: "flex",
15456
+ alignItems: "center",
15457
+ marginLeft: "auto",
15458
+ paddingLeft: 16,
15459
+ marginRight: -8
15460
+ });
15461
+ const SnackbarContent = /* @__PURE__ */ reactExports.forwardRef(function SnackbarContent2(inProps, ref) {
15462
+ const props = useDefaultProps({
15463
+ props: inProps,
15464
+ name: "MuiSnackbarContent"
15465
+ });
15466
+ const {
15467
+ action,
15468
+ className,
15469
+ message: message2,
15470
+ role = "alert",
15471
+ ...other
15472
+ } = props;
15473
+ const ownerState = props;
15474
+ const classes = useUtilityClasses$7(ownerState);
15475
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(SnackbarContentRoot, {
15476
+ role,
15477
+ square: true,
15478
+ elevation: 6,
15479
+ className: clsx(classes.root, className),
15480
+ ownerState,
15481
+ ref,
15482
+ ...other,
15483
+ children: [/* @__PURE__ */ jsxRuntimeExports.jsx(SnackbarContentMessage, {
15484
+ className: classes.message,
15485
+ ownerState,
15486
+ children: message2
15487
+ }), action ? /* @__PURE__ */ jsxRuntimeExports.jsx(SnackbarContentAction, {
15488
+ className: classes.action,
15489
+ ownerState,
15490
+ children: action
15491
+ }) : null]
15492
+ });
15493
+ });
15494
+ function getSnackbarUtilityClass(slot) {
15495
+ return generateUtilityClass("MuiSnackbar", slot);
15496
+ }
15497
+ generateUtilityClasses("MuiSnackbar", ["root", "anchorOriginTopCenter", "anchorOriginBottomCenter", "anchorOriginTopRight", "anchorOriginBottomRight", "anchorOriginTopLeft", "anchorOriginBottomLeft"]);
15498
+ const useUtilityClasses$6 = (ownerState) => {
15499
+ const {
15500
+ classes,
15501
+ anchorOrigin
15502
+ } = ownerState;
15503
+ const slots = {
15504
+ root: ["root", `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`]
15505
+ };
15506
+ return composeClasses(slots, getSnackbarUtilityClass, classes);
15507
+ };
15508
+ const SnackbarRoot = styled$1("div", {
15509
+ name: "MuiSnackbar",
15510
+ slot: "Root",
15511
+ overridesResolver: (props, styles2) => {
15512
+ const {
15513
+ ownerState
15514
+ } = props;
15515
+ return [styles2.root, styles2[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}`]];
15516
+ }
15517
+ })(memoTheme(({
15518
+ theme: theme2
15519
+ }) => ({
15520
+ zIndex: (theme2.vars || theme2).zIndex.snackbar,
15521
+ position: "fixed",
15522
+ display: "flex",
15523
+ left: 8,
15524
+ right: 8,
15525
+ justifyContent: "center",
15526
+ alignItems: "center",
15527
+ variants: [{
15528
+ props: ({
15529
+ ownerState
15530
+ }) => ownerState.anchorOrigin.vertical === "top",
15531
+ style: {
15532
+ top: 8,
15533
+ [theme2.breakpoints.up("sm")]: {
15534
+ top: 24
15535
+ }
15536
+ }
15537
+ }, {
15538
+ props: ({
15539
+ ownerState
15540
+ }) => ownerState.anchorOrigin.vertical !== "top",
15541
+ style: {
15542
+ bottom: 8,
15543
+ [theme2.breakpoints.up("sm")]: {
15544
+ bottom: 24
15545
+ }
15546
+ }
15547
+ }, {
15548
+ props: ({
15549
+ ownerState
15550
+ }) => ownerState.anchorOrigin.horizontal === "left",
15551
+ style: {
15552
+ justifyContent: "flex-start",
15553
+ [theme2.breakpoints.up("sm")]: {
15554
+ left: 24,
15555
+ right: "auto"
15556
+ }
15557
+ }
15558
+ }, {
15559
+ props: ({
15560
+ ownerState
15561
+ }) => ownerState.anchorOrigin.horizontal === "right",
15562
+ style: {
15563
+ justifyContent: "flex-end",
15564
+ [theme2.breakpoints.up("sm")]: {
15565
+ right: 24,
15566
+ left: "auto"
15567
+ }
15568
+ }
15569
+ }, {
15570
+ props: ({
15571
+ ownerState
15572
+ }) => ownerState.anchorOrigin.horizontal === "center",
15573
+ style: {
15574
+ [theme2.breakpoints.up("sm")]: {
15575
+ left: "50%",
15576
+ right: "auto",
15577
+ transform: "translateX(-50%)"
15578
+ }
15579
+ }
15580
+ }]
15581
+ })));
15582
+ const Snackbar = /* @__PURE__ */ reactExports.forwardRef(function Snackbar2(inProps, ref) {
15583
+ const props = useDefaultProps({
15584
+ props: inProps,
15585
+ name: "MuiSnackbar"
15586
+ });
15587
+ const theme2 = useTheme$1();
15588
+ const defaultTransitionDuration = {
15589
+ enter: theme2.transitions.duration.enteringScreen,
15590
+ exit: theme2.transitions.duration.leavingScreen
15591
+ };
15592
+ const {
15593
+ action,
15594
+ anchorOrigin: {
15595
+ vertical,
15596
+ horizontal
15597
+ } = {
15598
+ vertical: "bottom",
15599
+ horizontal: "left"
15600
+ },
15601
+ autoHideDuration = null,
15602
+ children,
15603
+ className,
15604
+ ClickAwayListenerProps: ClickAwayListenerPropsProp,
15605
+ ContentProps: ContentPropsProp,
15606
+ disableWindowBlurListener = false,
15607
+ message: message2,
15608
+ onBlur,
15609
+ onClose,
15610
+ onFocus,
15611
+ onMouseEnter,
15612
+ onMouseLeave,
15613
+ open,
15614
+ resumeHideDuration,
15615
+ slots = {},
15616
+ slotProps = {},
15617
+ TransitionComponent: TransitionComponentProp,
15618
+ transitionDuration = defaultTransitionDuration,
15619
+ TransitionProps: {
15620
+ onEnter,
15621
+ onExited,
15622
+ ...TransitionPropsProp
15623
+ } = {},
15624
+ ...other
15625
+ } = props;
15626
+ const ownerState = {
15627
+ ...props,
15628
+ anchorOrigin: {
15629
+ vertical,
15630
+ horizontal
15631
+ },
15632
+ autoHideDuration,
15633
+ disableWindowBlurListener,
15634
+ TransitionComponent: TransitionComponentProp,
15635
+ transitionDuration
15636
+ };
15637
+ const classes = useUtilityClasses$6(ownerState);
15638
+ const {
15639
+ getRootProps,
15640
+ onClickAway
15641
+ } = useSnackbar({
15642
+ ...ownerState
15643
+ });
15644
+ const [exited, setExited] = reactExports.useState(true);
15645
+ const handleExited = (node2) => {
15646
+ setExited(true);
15647
+ if (onExited) {
15648
+ onExited(node2);
15649
+ }
15650
+ };
15651
+ const handleEnter = (node2, isAppearing) => {
15652
+ setExited(false);
15653
+ if (onEnter) {
15654
+ onEnter(node2, isAppearing);
15655
+ }
15656
+ };
15657
+ const externalForwardedProps = {
15658
+ slots: {
15659
+ transition: TransitionComponentProp,
15660
+ ...slots
15661
+ },
15662
+ slotProps: {
15663
+ content: ContentPropsProp,
15664
+ clickAwayListener: ClickAwayListenerPropsProp,
15665
+ transition: TransitionPropsProp,
15666
+ ...slotProps
15667
+ }
15668
+ };
15669
+ const [Root, rootProps] = useSlot("root", {
15670
+ ref,
15671
+ className: [classes.root, className],
15672
+ elementType: SnackbarRoot,
15673
+ getSlotProps: getRootProps,
15674
+ externalForwardedProps: {
15675
+ ...externalForwardedProps,
15676
+ ...other
15677
+ },
15678
+ ownerState
15679
+ });
15680
+ const [ClickAwaySlot, clickAwayListenerProps] = useSlot("clickAwayListener", {
15681
+ elementType: ClickAwayListener,
15682
+ externalForwardedProps,
15683
+ getSlotProps: (handlers2) => ({
15684
+ onClickAway: (...params) => {
15685
+ handlers2.onClickAway?.(...params);
15686
+ onClickAway(...params);
15687
+ }
15688
+ }),
15689
+ ownerState
15690
+ });
15691
+ const [ContentSlot, contentSlotProps] = useSlot("content", {
15692
+ elementType: SnackbarContent,
15693
+ shouldForwardComponentProp: true,
15694
+ externalForwardedProps,
15695
+ additionalProps: {
15696
+ message: message2,
15697
+ action
15698
+ },
15699
+ ownerState
15700
+ });
15701
+ const [TransitionSlot, transitionProps] = useSlot("transition", {
15702
+ elementType: Grow,
15703
+ externalForwardedProps,
15704
+ getSlotProps: (handlers2) => ({
15705
+ onEnter: (...params) => {
15706
+ handlers2.onEnter?.(...params);
15707
+ handleEnter(...params);
15708
+ },
15709
+ onExited: (...params) => {
15710
+ handlers2.onExited?.(...params);
15711
+ handleExited(...params);
15712
+ }
15713
+ }),
15714
+ additionalProps: {
15715
+ appear: true,
15716
+ in: open,
15717
+ timeout: transitionDuration,
15718
+ direction: vertical === "top" ? "down" : "up"
15719
+ },
15720
+ ownerState
15721
+ });
15722
+ if (!open && exited) {
15723
+ return null;
15724
+ }
15725
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ClickAwaySlot, {
15726
+ ...clickAwayListenerProps,
15727
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Root, {
15728
+ ...rootProps,
15729
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(TransitionSlot, {
15730
+ ...transitionProps,
15731
+ children: children || /* @__PURE__ */ jsxRuntimeExports.jsx(ContentSlot, {
15732
+ ...contentSlotProps
15733
+ })
15734
+ })
15735
+ })
15736
+ });
15737
+ });
15299
15738
  function getTooltipUtilityClass(slot) {
15300
15739
  return generateUtilityClass("MuiTooltip", slot);
15301
15740
  }
@@ -25278,6 +25717,19 @@ const HealthApi = {
25278
25717
  );
25279
25718
  }
25280
25719
  return response.json();
25720
+ },
25721
+ /**
25722
+ * Get the server version from the health check response
25723
+ * Handles backward compatibility with older server versions
25724
+ *
25725
+ * @param healthResponse - The health check response
25726
+ * @returns The server version or "Unknown (update required)" if not available
25727
+ */
25728
+ getServerVersion(healthResponse) {
25729
+ if (healthResponse.result?.version) {
25730
+ return healthResponse.result.version;
25731
+ }
25732
+ return "Unknown (update required)";
25281
25733
  }
25282
25734
  };
25283
25735
  const JobsApi = {
@@ -31031,7 +31483,7 @@ const SidebarContent = styled$1(Box)({
31031
31483
  borderRadius: "4px"
31032
31484
  }
31033
31485
  });
31034
- const SectionTitle$5 = styled$1(Typography)(({ theme: theme2 }) => ({
31486
+ const SectionTitle$6 = styled$1(Typography)(({ theme: theme2 }) => ({
31035
31487
  fontWeight: 600,
31036
31488
  marginBottom: theme2.spacing(2),
31037
31489
  marginTop: theme2.spacing(3),
@@ -31675,7 +32127,7 @@ const GenerationSettingsSection = ({
31675
32127
  updateAgentMutation
31676
32128
  }) => {
31677
32129
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
31678
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$5, { variant: "subtitle1", children: [
32130
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$6, { variant: "subtitle1", children: [
31679
32131
  /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$3, { icon: faSliders }),
31680
32132
  "Generation Settings",
31681
32133
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -42431,7 +42883,7 @@ const ModelHostingSection = ({
42431
42883
  updateAgentMutation
42432
42884
  }) => {
42433
42885
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
42434
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$5, { variant: "subtitle1", children: [
42886
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$6, { variant: "subtitle1", children: [
42435
42887
  /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$3, { icon: faServer }),
42436
42888
  "Model & Hosting",
42437
42889
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -80594,8 +81046,8 @@ var unitlessKeys = {
80594
81046
  strokeOpacity: 1,
80595
81047
  strokeWidth: 1
80596
81048
  };
80597
- var define_process_env_default = {};
80598
- var f = "undefined" != typeof process && void 0 !== define_process_env_default && (define_process_env_default.REACT_APP_SC_ATTR || define_process_env_default.SC_ATTR) || "data-styled", m = "active", y = "data-styled-version", v = "6.1.15", g = "/*!sc*/\n", S = "undefined" != typeof window && "HTMLElement" in window, w = Boolean("boolean" == typeof SC_DISABLE_SPEEDY ? SC_DISABLE_SPEEDY : "undefined" != typeof process && void 0 !== define_process_env_default && void 0 !== define_process_env_default.REACT_APP_SC_DISABLE_SPEEDY && "" !== define_process_env_default.REACT_APP_SC_DISABLE_SPEEDY ? "false" !== define_process_env_default.REACT_APP_SC_DISABLE_SPEEDY && define_process_env_default.REACT_APP_SC_DISABLE_SPEEDY : "undefined" != typeof process && void 0 !== define_process_env_default && void 0 !== define_process_env_default.SC_DISABLE_SPEEDY && "" !== define_process_env_default.SC_DISABLE_SPEEDY ? "false" !== define_process_env_default.SC_DISABLE_SPEEDY && define_process_env_default.SC_DISABLE_SPEEDY : false), b = {}, _ = Object.freeze([]), C = Object.freeze({});
81049
+ var define_process_env_default$1 = {};
81050
+ var f = "undefined" != typeof process && void 0 !== define_process_env_default$1 && (define_process_env_default$1.REACT_APP_SC_ATTR || define_process_env_default$1.SC_ATTR) || "data-styled", m = "active", y = "data-styled-version", v = "6.1.15", g = "/*!sc*/\n", S = "undefined" != typeof window && "HTMLElement" in window, w = Boolean("boolean" == typeof SC_DISABLE_SPEEDY ? SC_DISABLE_SPEEDY : "undefined" != typeof process && void 0 !== define_process_env_default$1 && void 0 !== define_process_env_default$1.REACT_APP_SC_DISABLE_SPEEDY && "" !== define_process_env_default$1.REACT_APP_SC_DISABLE_SPEEDY ? "false" !== define_process_env_default$1.REACT_APP_SC_DISABLE_SPEEDY && define_process_env_default$1.REACT_APP_SC_DISABLE_SPEEDY : "undefined" != typeof process && void 0 !== define_process_env_default$1 && void 0 !== define_process_env_default$1.SC_DISABLE_SPEEDY && "" !== define_process_env_default$1.SC_DISABLE_SPEEDY ? "false" !== define_process_env_default$1.SC_DISABLE_SPEEDY && define_process_env_default$1.SC_DISABLE_SPEEDY : false), b = {}, _ = Object.freeze([]), C = Object.freeze({});
80599
81051
  function I(e2, t2, n2) {
80600
81052
  return void 0 === n2 && (n2 = C), e2.theme !== n2.theme && e2.theme || t2 || n2.theme;
80601
81053
  }
@@ -84517,7 +84969,7 @@ const PageHeader = ({
84517
84969
  children
84518
84970
  ] });
84519
84971
  };
84520
- const SectionTitle$4 = styled$1(Typography)(({ theme: theme2 }) => ({
84972
+ const SectionTitle$5 = styled$1(Typography)(({ theme: theme2 }) => ({
84521
84973
  fontWeight: 600,
84522
84974
  marginBottom: theme2.spacing(2),
84523
84975
  display: "flex",
@@ -84621,7 +85073,7 @@ const ChatSettings = ({
84621
85073
  setLocalAgent(selectedAgent);
84622
85074
  }, [selectedAgent]);
84623
85075
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { mt: 4, mb: 3 }, children: [
84624
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$4, { variant: "subtitle1", children: [
85076
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$5, { variant: "subtitle1", children: [
84625
85077
  /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$2, { icon: faComments }),
84626
85078
  "Chat Settings",
84627
85079
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -85150,7 +85602,7 @@ const HeaderContainer = styled$1(Box)(({ theme: theme2 }) => ({
85150
85602
  marginBottom: theme2.spacing(2),
85151
85603
  gap: theme2.spacing(2)
85152
85604
  }));
85153
- const SectionTitle$3 = styled$1(Typography)(({ theme: theme2 }) => ({
85605
+ const SectionTitle$4 = styled$1(Typography)(({ theme: theme2 }) => ({
85154
85606
  fontWeight: 600,
85155
85607
  marginBottom: theme2.spacing(2),
85156
85608
  display: "flex",
@@ -85288,7 +85740,7 @@ const GeneralSettings = ({
85288
85740
  ] }),
85289
85741
  /* @__PURE__ */ jsxRuntimeExports.jsx(Divider, { sx: { mb: 3 } }),
85290
85742
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { mb: 3 }, children: [
85291
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$3, { variant: "subtitle1", children: [
85743
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$4, { variant: "subtitle1", children: [
85292
85744
  /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$1, { icon: faInfoCircle }),
85293
85745
  "Agent Information"
85294
85746
  ] }),
@@ -85353,7 +85805,7 @@ const GeneralSettings = ({
85353
85805
  ] })
85354
85806
  ] });
85355
85807
  };
85356
- const SectionTitle$2 = styled$1(Typography)(({ theme: theme2 }) => ({
85808
+ const SectionTitle$3 = styled$1(Typography)(({ theme: theme2 }) => ({
85357
85809
  fontWeight: 600,
85358
85810
  marginBottom: theme2.spacing(2),
85359
85811
  display: "flex",
@@ -85380,7 +85832,7 @@ const SecuritySettings = ({
85380
85832
  initialSelectedAgentId
85381
85833
  }) => {
85382
85834
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { mt: 1 }, children: [
85383
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$2, { variant: "subtitle1", children: [
85835
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$3, { variant: "subtitle1", children: [
85384
85836
  /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon, { icon: faShieldAlt }),
85385
85837
  "Security Prompt",
85386
85838
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -85956,6 +86408,441 @@ const ModelsInitializer = () => {
85956
86408
  useInitializeModels();
85957
86409
  return null;
85958
86410
  };
86411
+ var define_process_env_default = {};
86412
+ const UpdateContainer = styled$1("div")(({ theme: theme2 }) => ({
86413
+ padding: 16,
86414
+ borderRadius: 8,
86415
+ backgroundColor: theme2.palette.background.paper,
86416
+ boxShadow: "0 2px 10px rgba(0, 0, 0, 0.1)",
86417
+ marginBottom: 16
86418
+ }));
86419
+ const UpdateActions = styled$1("div")({
86420
+ display: "flex",
86421
+ justifyContent: "flex-end",
86422
+ gap: 8,
86423
+ marginTop: 16
86424
+ });
86425
+ const ProgressContainer = styled$1("div")({
86426
+ marginTop: 16,
86427
+ marginBottom: 8
86428
+ });
86429
+ const UpdateNotification = ({
86430
+ autoCheck = true
86431
+ }) => {
86432
+ const [checking, setChecking] = reactExports.useState(false);
86433
+ const [updateAvailable, setUpdateAvailable] = reactExports.useState(false);
86434
+ const [updateInfo, setUpdateInfo] = reactExports.useState(null);
86435
+ const [downloading, setDownloading] = reactExports.useState(false);
86436
+ const [downloadProgress, setDownloadProgress] = reactExports.useState(
86437
+ null
86438
+ );
86439
+ const [updateDownloaded, setUpdateDownloaded] = reactExports.useState(false);
86440
+ const [error, setError] = reactExports.useState(null);
86441
+ const [snackbarOpen, setSnackbarOpen] = reactExports.useState(false);
86442
+ const checkForUpdates = reactExports.useCallback(async () => {
86443
+ try {
86444
+ setChecking(true);
86445
+ setError(null);
86446
+ await window.api.updater.checkForUpdates();
86447
+ } catch (err) {
86448
+ setError(
86449
+ `Error checking for updates: ${err instanceof Error ? err.message : String(err)}`
86450
+ );
86451
+ setSnackbarOpen(true);
86452
+ } finally {
86453
+ setChecking(false);
86454
+ }
86455
+ }, []);
86456
+ const downloadUpdate = reactExports.useCallback(async () => {
86457
+ try {
86458
+ setDownloading(true);
86459
+ setError(null);
86460
+ await window.api.updater.downloadUpdate();
86461
+ } catch (err) {
86462
+ setError(
86463
+ `Error downloading update: ${err instanceof Error ? err.message : String(err)}`
86464
+ );
86465
+ setDownloading(false);
86466
+ setSnackbarOpen(true);
86467
+ }
86468
+ }, []);
86469
+ const installUpdate = reactExports.useCallback(() => {
86470
+ window.api.updater.quitAndInstall();
86471
+ }, []);
86472
+ reactExports.useEffect(() => {
86473
+ const removeUpdateAvailableListener = window.api.updater.onUpdateAvailable(
86474
+ (info) => {
86475
+ setUpdateAvailable(true);
86476
+ setUpdateInfo(info);
86477
+ setSnackbarOpen(true);
86478
+ }
86479
+ );
86480
+ const removeUpdateNotAvailableListener = window.api.updater.onUpdateNotAvailable(() => {
86481
+ setUpdateAvailable(false);
86482
+ setUpdateInfo(null);
86483
+ });
86484
+ const removeUpdateDownloadedListener = window.api.updater.onUpdateDownloaded((info) => {
86485
+ setDownloading(false);
86486
+ setUpdateDownloaded(true);
86487
+ setUpdateInfo(info);
86488
+ setSnackbarOpen(true);
86489
+ });
86490
+ const removeUpdateErrorListener = window.api.updater.onUpdateError(
86491
+ (errorMessage) => {
86492
+ setError(errorMessage);
86493
+ setChecking(false);
86494
+ setDownloading(false);
86495
+ setSnackbarOpen(true);
86496
+ }
86497
+ );
86498
+ const removeUpdateProgressListener = window.api.updater.onUpdateProgress(
86499
+ (progressObj) => {
86500
+ setDownloadProgress(progressObj);
86501
+ }
86502
+ );
86503
+ if (autoCheck) {
86504
+ checkForUpdates();
86505
+ }
86506
+ return () => {
86507
+ removeUpdateAvailableListener();
86508
+ removeUpdateNotAvailableListener();
86509
+ removeUpdateDownloadedListener();
86510
+ removeUpdateErrorListener();
86511
+ removeUpdateProgressListener();
86512
+ };
86513
+ }, [autoCheck, checkForUpdates]);
86514
+ const handleSnackbarClose = () => {
86515
+ setSnackbarOpen(false);
86516
+ };
86517
+ if (checking) {
86518
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
86519
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: "Checking for Updates" }),
86520
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body1", children: "Please wait while we check for available updates..." }),
86521
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ProgressContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(LinearProgress, {}) })
86522
+ ] });
86523
+ }
86524
+ if (error) {
86525
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
86526
+ Snackbar,
86527
+ {
86528
+ open: snackbarOpen,
86529
+ autoHideDuration: 6e3,
86530
+ onClose: handleSnackbarClose,
86531
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
86532
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, { onClose: handleSnackbarClose, severity: "error", children: error })
86533
+ }
86534
+ );
86535
+ }
86536
+ if (updateAvailable && !updateDownloaded && updateInfo) {
86537
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
86538
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
86539
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: "Update Available" }),
86540
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body1", children: [
86541
+ "Version ",
86542
+ updateInfo.version,
86543
+ " is available. You are currently using version ",
86544
+ define_process_env_default.npm_package_version || "unknown",
86545
+ "."
86546
+ ] }),
86547
+ updateInfo.releaseNotes && /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", sx: { mt: 1 }, children: [
86548
+ "Release Notes:",
86549
+ " ",
86550
+ typeof updateInfo.releaseNotes === "string" ? updateInfo.releaseNotes : "See release notes on GitHub"
86551
+ ] }),
86552
+ downloading && downloadProgress && /* @__PURE__ */ jsxRuntimeExports.jsxs(ProgressContainer, { children: [
86553
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", children: [
86554
+ "Downloading: ",
86555
+ Math.round(downloadProgress.percent),
86556
+ "%"
86557
+ ] }),
86558
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
86559
+ LinearProgress,
86560
+ {
86561
+ variant: "determinate",
86562
+ value: downloadProgress.percent,
86563
+ sx: { mt: 1 }
86564
+ }
86565
+ ),
86566
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "caption", sx: { mt: 0.5, display: "block" }, children: [
86567
+ Math.round(downloadProgress.transferred / 1024),
86568
+ " KB of",
86569
+ " ",
86570
+ Math.round(downloadProgress.total / 1024),
86571
+ " KB"
86572
+ ] })
86573
+ ] }),
86574
+ /* @__PURE__ */ jsxRuntimeExports.jsx(UpdateActions, { children: !downloading && /* @__PURE__ */ jsxRuntimeExports.jsx(
86575
+ Button,
86576
+ {
86577
+ variant: "contained",
86578
+ color: "primary",
86579
+ onClick: downloadUpdate,
86580
+ disabled: downloading,
86581
+ children: "Download Update"
86582
+ }
86583
+ ) })
86584
+ ] }),
86585
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
86586
+ Snackbar,
86587
+ {
86588
+ open: snackbarOpen,
86589
+ autoHideDuration: 6e3,
86590
+ onClose: handleSnackbarClose,
86591
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
86592
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Alert, { onClose: handleSnackbarClose, severity: "info", children: [
86593
+ "A new update is available: v",
86594
+ updateInfo.version
86595
+ ] })
86596
+ }
86597
+ )
86598
+ ] });
86599
+ }
86600
+ if (updateDownloaded && updateInfo) {
86601
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
86602
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
86603
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: "Update Ready to Install" }),
86604
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body1", children: [
86605
+ "Version ",
86606
+ updateInfo.version,
86607
+ " has been downloaded and is ready to install."
86608
+ ] }),
86609
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", sx: { mt: 1 }, children: "The application will restart to apply the update." }),
86610
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateActions, { children: [
86611
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "contained", color: "primary", onClick: installUpdate, children: "Install Now" }),
86612
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "outlined", onClick: () => setSnackbarOpen(false), children: "Install Later" })
86613
+ ] })
86614
+ ] }),
86615
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
86616
+ Snackbar,
86617
+ {
86618
+ open: snackbarOpen,
86619
+ autoHideDuration: 6e3,
86620
+ onClose: handleSnackbarClose,
86621
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
86622
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, { onClose: handleSnackbarClose, severity: "success", children: "Update downloaded and ready to install" })
86623
+ }
86624
+ )
86625
+ ] });
86626
+ }
86627
+ return null;
86628
+ };
86629
+ const CheckForUpdatesButton = () => {
86630
+ const [checking, setChecking] = reactExports.useState(false);
86631
+ const [error, setError] = reactExports.useState(null);
86632
+ const [snackbarOpen, setSnackbarOpen] = reactExports.useState(false);
86633
+ const [noUpdateAvailable, setNoUpdateAvailable] = reactExports.useState(false);
86634
+ const [devModeMessage, setDevModeMessage] = reactExports.useState(null);
86635
+ const [npxUpdateInfo, setNpxUpdateInfo] = reactExports.useState(
86636
+ null
86637
+ );
86638
+ const [backendUpdateInfo, setBackendUpdateInfo] = reactExports.useState(null);
86639
+ const [backendUpdateCompleted, setBackendUpdateCompleted] = reactExports.useState(false);
86640
+ const [updatingBackend, setUpdatingBackend] = reactExports.useState(false);
86641
+ const checkForUpdates = async () => {
86642
+ try {
86643
+ setChecking(true);
86644
+ setError(null);
86645
+ setDevModeMessage(null);
86646
+ setNpxUpdateInfo(null);
86647
+ setBackendUpdateInfo(null);
86648
+ setBackendUpdateCompleted(false);
86649
+ await window.api.updater.checkForAllUpdates();
86650
+ setNoUpdateAvailable(true);
86651
+ setSnackbarOpen(true);
86652
+ } catch (err) {
86653
+ setError(
86654
+ `Error checking for updates: ${err instanceof Error ? err.message : String(err)}`
86655
+ );
86656
+ setSnackbarOpen(true);
86657
+ } finally {
86658
+ setChecking(false);
86659
+ }
86660
+ };
86661
+ const updateBackend = async () => {
86662
+ try {
86663
+ setUpdatingBackend(true);
86664
+ setError(null);
86665
+ await window.api.updater.updateBackend();
86666
+ } catch (err) {
86667
+ setError(
86668
+ `Error updating backend: ${err instanceof Error ? err.message : String(err)}`
86669
+ );
86670
+ setSnackbarOpen(true);
86671
+ } finally {
86672
+ setUpdatingBackend(false);
86673
+ }
86674
+ };
86675
+ reactExports.useEffect(() => {
86676
+ const removeUpdateNotAvailableListener = window.api.updater.onUpdateNotAvailable(() => {
86677
+ setNoUpdateAvailable(true);
86678
+ setSnackbarOpen(true);
86679
+ });
86680
+ const removeUpdateDevModeListener = window.api.updater.onUpdateDevMode(
86681
+ (message2) => {
86682
+ setDevModeMessage(message2);
86683
+ setChecking(false);
86684
+ setSnackbarOpen(true);
86685
+ }
86686
+ );
86687
+ const removeUpdateNpxAvailableListener = window.api.updater.onUpdateNpxAvailable((info) => {
86688
+ setNpxUpdateInfo(info);
86689
+ setChecking(false);
86690
+ setSnackbarOpen(true);
86691
+ });
86692
+ const removeBackendUpdateAvailableListener = window.api.updater.onBackendUpdateAvailable((info) => {
86693
+ setBackendUpdateInfo(info);
86694
+ setChecking(false);
86695
+ setSnackbarOpen(true);
86696
+ });
86697
+ const removeBackendUpdateNotAvailableListener = window.api.updater.onBackendUpdateNotAvailable(() => {
86698
+ });
86699
+ const removeBackendUpdateCompletedListener = window.api.updater.onBackendUpdateCompleted(() => {
86700
+ setBackendUpdateCompleted(true);
86701
+ setBackendUpdateInfo(null);
86702
+ setUpdatingBackend(false);
86703
+ setSnackbarOpen(true);
86704
+ });
86705
+ const removeUpdateErrorListener = window.api.updater.onUpdateError(
86706
+ (errorMessage) => {
86707
+ setError(errorMessage);
86708
+ setChecking(false);
86709
+ setUpdatingBackend(false);
86710
+ setSnackbarOpen(true);
86711
+ }
86712
+ );
86713
+ return () => {
86714
+ removeUpdateNotAvailableListener();
86715
+ removeUpdateDevModeListener();
86716
+ removeUpdateNpxAvailableListener();
86717
+ removeBackendUpdateAvailableListener();
86718
+ removeBackendUpdateNotAvailableListener();
86719
+ removeBackendUpdateCompletedListener();
86720
+ removeUpdateErrorListener();
86721
+ };
86722
+ }, []);
86723
+ const handleSnackbarClose = () => {
86724
+ setSnackbarOpen(false);
86725
+ setNoUpdateAvailable(false);
86726
+ setDevModeMessage(null);
86727
+ setNpxUpdateInfo(null);
86728
+ setBackendUpdateCompleted(false);
86729
+ };
86730
+ const handleCopyCommand = (command) => {
86731
+ navigator.clipboard.writeText(command);
86732
+ setError("Command copied to clipboard!");
86733
+ setTimeout(() => {
86734
+ setError(null);
86735
+ }, 2e3);
86736
+ };
86737
+ let snackbarContent = null;
86738
+ if (error) {
86739
+ snackbarContent = /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, { onClose: handleSnackbarClose, severity: "error", children: error });
86740
+ } else if (backendUpdateCompleted) {
86741
+ snackbarContent = /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, { onClose: handleSnackbarClose, severity: "success", children: "Backend updated successfully" });
86742
+ } else if (backendUpdateInfo) {
86743
+ snackbarContent = /* @__PURE__ */ jsxRuntimeExports.jsxs(
86744
+ Alert,
86745
+ {
86746
+ onClose: handleSnackbarClose,
86747
+ severity: "info",
86748
+ action: /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
86749
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
86750
+ Button,
86751
+ {
86752
+ color: "inherit",
86753
+ size: "small",
86754
+ onClick: () => handleCopyCommand(backendUpdateInfo.updateCommand),
86755
+ sx: { mr: 1 },
86756
+ children: "Copy"
86757
+ }
86758
+ ),
86759
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
86760
+ Button,
86761
+ {
86762
+ color: "primary",
86763
+ size: "small",
86764
+ onClick: updateBackend,
86765
+ disabled: updatingBackend,
86766
+ children: updatingBackend ? "Updating..." : "Update"
86767
+ }
86768
+ )
86769
+ ] }),
86770
+ children: [
86771
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", sx: { mb: 1 }, children: [
86772
+ "Backend update available: ",
86773
+ backendUpdateInfo.latestVersion,
86774
+ " (current:",
86775
+ " ",
86776
+ backendUpdateInfo.currentVersion,
86777
+ ")"
86778
+ ] }),
86779
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", children: [
86780
+ "To update manually, run:",
86781
+ " ",
86782
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: backendUpdateInfo.updateCommand })
86783
+ ] })
86784
+ ]
86785
+ }
86786
+ );
86787
+ } else if (npxUpdateInfo) {
86788
+ snackbarContent = /* @__PURE__ */ jsxRuntimeExports.jsxs(
86789
+ Alert,
86790
+ {
86791
+ onClose: handleSnackbarClose,
86792
+ severity: "info",
86793
+ action: /* @__PURE__ */ jsxRuntimeExports.jsx(
86794
+ Button,
86795
+ {
86796
+ color: "inherit",
86797
+ size: "small",
86798
+ onClick: () => handleCopyCommand(npxUpdateInfo.updateCommand),
86799
+ children: "Copy"
86800
+ }
86801
+ ),
86802
+ children: [
86803
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", sx: { mb: 1 }, children: [
86804
+ "UI update available: ",
86805
+ npxUpdateInfo.latestVersion,
86806
+ " (current:",
86807
+ " ",
86808
+ npxUpdateInfo.currentVersion,
86809
+ ")"
86810
+ ] }),
86811
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", children: [
86812
+ "To update, run: ",
86813
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: npxUpdateInfo.updateCommand })
86814
+ ] })
86815
+ ]
86816
+ }
86817
+ );
86818
+ } else if (devModeMessage) {
86819
+ snackbarContent = /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, { onClose: handleSnackbarClose, severity: "info", children: devModeMessage });
86820
+ } else if (noUpdateAvailable) {
86821
+ snackbarContent = /* @__PURE__ */ jsxRuntimeExports.jsx(Alert, { onClose: handleSnackbarClose, severity: "info", children: "You're using the latest version" });
86822
+ }
86823
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
86824
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
86825
+ Button,
86826
+ {
86827
+ variant: "outlined",
86828
+ onClick: checkForUpdates,
86829
+ disabled: checking,
86830
+ startIcon: checking ? /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { width: 16, height: 16 } }) : void 0,
86831
+ children: checking ? "Checking..." : "Check for Updates"
86832
+ }
86833
+ ),
86834
+ snackbarOpen && snackbarContent && /* @__PURE__ */ jsxRuntimeExports.jsx(
86835
+ Snackbar,
86836
+ {
86837
+ open: snackbarOpen,
86838
+ autoHideDuration: 6e3,
86839
+ onClose: handleSnackbarClose,
86840
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
86841
+ children: snackbarContent
86842
+ }
86843
+ )
86844
+ ] });
86845
+ };
85959
86846
  const localOperatorIcon = "" + new URL("icon-ngVHF_bZ.png", import.meta.url).href;
85960
86847
  const pulse$1 = keyframes`
85961
86848
  0% {
@@ -86636,7 +87523,7 @@ const SectionContainer = styled$1(Paper)(({ theme: theme2 }) => ({
86636
87523
  transform: "translateY(-2px)"
86637
87524
  }
86638
87525
  }));
86639
- const SectionTitle$1 = styled$1(Typography)(({ theme: theme2 }) => ({
87526
+ const SectionTitle$2 = styled$1(Typography)(({ theme: theme2 }) => ({
86640
87527
  fontSize: "1.25rem",
86641
87528
  fontWeight: 700,
86642
87529
  marginBottom: theme2.spacing(1.5),
@@ -86645,7 +87532,7 @@ const SectionTitle$1 = styled$1(Typography)(({ theme: theme2 }) => ({
86645
87532
  alignItems: "center",
86646
87533
  gap: theme2.spacing(1)
86647
87534
  }));
86648
- const SectionDescription$1 = styled$1(Typography)(({ theme: theme2 }) => ({
87535
+ const SectionDescription$2 = styled$1(Typography)(({ theme: theme2 }) => ({
86649
87536
  fontSize: "1rem",
86650
87537
  color: theme2.palette.text.secondary,
86651
87538
  marginBottom: theme2.spacing(2.5),
@@ -86795,8 +87682,8 @@ const CreateAgentStep = () => {
86795
87682
  }
86796
87683
  };
86797
87684
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionContainer, { children: [
86798
- /* @__PURE__ */ jsxRuntimeExports.jsx(SectionTitle$1, { children: "Create Your First AI Assistant" }),
86799
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$1, { children: [
87685
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SectionTitle$2, { children: "Create Your First AI Assistant" }),
87686
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$2, { children: [
86800
87687
  /* @__PURE__ */ jsxRuntimeExports.jsx(EmojiContainer, { children: "🤖" }),
86801
87688
  " It's time to create your very first AI assistant! Give it a name and personality that reflects what you want it to help you with. This is where the magic begins!"
86802
87689
  ] }),
@@ -87128,8 +88015,8 @@ const DefaultModelStep = () => {
87128
88015
  }, [availableModels, selectedModel, selectedProvider, saveModelConfig]);
87129
88016
  const isLoading = isLoadingModels || isLoadingCredentials || isLoadingConfig;
87130
88017
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionContainer, { children: [
87131
- /* @__PURE__ */ jsxRuntimeExports.jsx(SectionTitle$1, { children: "Choose Your Default Model" }),
87132
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$1, { children: [
88018
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SectionTitle$2, { children: "Choose Your Default Model" }),
88019
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$2, { children: [
87133
88020
  /* @__PURE__ */ jsxRuntimeExports.jsx(EmojiContainer, { children: "✨" }),
87134
88021
  " Select your preferred AI model and provider that will power all your agents. Don't worry, you can always customize this for individual agents later!"
87135
88022
  ] }),
@@ -87542,8 +88429,8 @@ const ModelCredentialStep = () => {
87542
88429
  (cred) => cred.key === selectedCredential
87543
88430
  );
87544
88431
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionContainer, { children: [
87545
- /* @__PURE__ */ jsxRuntimeExports.jsx(SectionTitle$1, { children: "Add Model Provider Credential" }),
87546
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$1, { children: [
88432
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SectionTitle$2, { children: "Add Model Provider Credential" }),
88433
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$2, { children: [
87547
88434
  /* @__PURE__ */ jsxRuntimeExports.jsx(EmojiContainer, { children: "✨" }),
87548
88435
  " To unlock the power of AI models, you need to add at least one model provider API key. Your key will be securely stored on your device and used to access amazing AI capabilities!"
87549
88436
  ] }),
@@ -87801,8 +88688,8 @@ const SearchApiStep = () => {
87801
88688
  (cred) => cred.key === selectedCredential
87802
88689
  );
87803
88690
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionContainer, { children: [
87804
- /* @__PURE__ */ jsxRuntimeExports.jsx(SectionTitle$1, { children: "Enable Web Search (Optional)" }),
87805
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$1, { children: [
88691
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SectionTitle$2, { children: "Enable Web Search (Optional)" }),
88692
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$2, { children: [
87806
88693
  /* @__PURE__ */ jsxRuntimeExports.jsx(EmojiContainer, { children: "🌐" }),
87807
88694
  " Supercharge your AI agents with the ability to search the web for real-time information! This optional feature gives your AI assistants access to the latest data from across the internet."
87808
88695
  ] }),
@@ -88055,8 +88942,8 @@ const UserProfileStep = () => {
88055
88942
  setEmail(e.target.value);
88056
88943
  };
88057
88944
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionContainer, { children: [
88058
- /* @__PURE__ */ jsxRuntimeExports.jsx(SectionTitle$1, { children: "Your Profile Information" }),
88059
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$1, { children: [
88945
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SectionTitle$2, { children: "Your Profile Information" }),
88946
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$2, { children: [
88060
88947
  /* @__PURE__ */ jsxRuntimeExports.jsx(EmojiContainer, { children: "🔒" }),
88061
88948
  " This information is stored locally and is only used to personalize your AI experience. It's never shared with any external services - your privacy matters to us!"
88062
88949
  ] }),
@@ -88158,7 +89045,7 @@ const WelcomeStep = () => {
88158
89045
  children: "This quick setup will guide you through:"
88159
89046
  }
88160
89047
  ),
88161
- /* @__PURE__ */ jsxRuntimeExports.jsx(SectionContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(SectionDescription$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { mt: 0 }, children: [
89048
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SectionContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(SectionDescription$2, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { mt: 0 }, children: [
88162
89049
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { mb: 1.5, display: "flex", alignItems: "flex-start" }, children: [
88163
89050
  /* @__PURE__ */ jsxRuntimeExports.jsx(EmojiContainer, { children: "👤" }),
88164
89051
  " Setting up your personalized user profile"
@@ -88431,6 +89318,185 @@ const ToggleSetting = ({
88431
89318
  ) })
88432
89319
  ] });
88433
89320
  };
89321
+ const StyledCard$3 = styled$1(Card)(() => ({
89322
+ marginBottom: 32,
89323
+ backgroundColor: "background.paper",
89324
+ borderRadius: 8,
89325
+ boxShadow: "0 4px 20px rgba(0,0,0,0.06)"
89326
+ }));
89327
+ const StyledCardContent$3 = styled$1(CardContent)(({ theme: theme2 }) => ({
89328
+ [theme2.breakpoints.down("sm")]: {
89329
+ padding: 16
89330
+ },
89331
+ [theme2.breakpoints.up("sm")]: {
89332
+ padding: 24
89333
+ }
89334
+ }));
89335
+ const CardTitle$2 = styled$1(Typography)(() => ({
89336
+ marginBottom: 16,
89337
+ display: "flex",
89338
+ alignItems: "center",
89339
+ gap: 8
89340
+ }));
89341
+ const CardDescription$2 = styled$1(Typography)(() => ({
89342
+ marginBottom: 24,
89343
+ color: "text.secondary"
89344
+ }));
89345
+ const AppUpdates = () => {
89346
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(StyledCard$3, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledCardContent$3, { children: [
89347
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(CardTitle$2, { variant: "h6", children: [
89348
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faDownload }),
89349
+ "Application Updates"
89350
+ ] }),
89351
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CardDescription$2, { variant: "body2", children: "Check for and install updates to the Local Operator application." }),
89352
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CheckForUpdatesButton, {})
89353
+ ] }) });
89354
+ };
89355
+ const SectionTitle$1 = styled$1(Typography)(({ theme: theme2 }) => ({
89356
+ marginTop: theme2.spacing(4),
89357
+ marginBottom: theme2.spacing(2),
89358
+ fontWeight: 500,
89359
+ display: "flex",
89360
+ alignItems: "center",
89361
+ gap: 8
89362
+ }));
89363
+ const SectionDescription$1 = styled$1(Typography)(({ theme: theme2 }) => ({
89364
+ marginBottom: theme2.spacing(3),
89365
+ color: theme2.palette.text.secondary
89366
+ }));
89367
+ const InfoBox$1 = styled$1(Box)(() => ({
89368
+ padding: 16,
89369
+ borderRadius: 8,
89370
+ backgroundColor: "background.default",
89371
+ height: "100%",
89372
+ marginBottom: 24
89373
+ }));
89374
+ const InfoLabel$1 = styled$1(Typography)(() => ({
89375
+ color: "text.secondary",
89376
+ marginBottom: 8
89377
+ }));
89378
+ const InfoValue$1 = styled$1(Typography)(() => ({
89379
+ fontWeight: 500
89380
+ }));
89381
+ const AppUpdatesSection = () => {
89382
+ const [appVersion, setAppVersion] = reactExports.useState("0.1.2-beta.6");
89383
+ const [serverVersion, setServerVersion] = reactExports.useState(
89384
+ "Unknown (update required)"
89385
+ );
89386
+ const [platformInfo, setPlatformInfo] = reactExports.useState({
89387
+ platform: "unknown",
89388
+ arch: "unknown",
89389
+ nodeVersion: "unknown",
89390
+ electronVersion: "unknown",
89391
+ chromeVersion: "unknown"
89392
+ });
89393
+ reactExports.useEffect(() => {
89394
+ const fetchAppInfo = async () => {
89395
+ try {
89396
+ const version = await window.api.systemInfo.getAppVersion();
89397
+ setAppVersion(version);
89398
+ const info = await window.api.systemInfo.getPlatformInfo();
89399
+ setPlatformInfo(info);
89400
+ } catch (error) {
89401
+ console.error("Error fetching app information:", error);
89402
+ }
89403
+ };
89404
+ const fetchServerVersion = async () => {
89405
+ try {
89406
+ const healthResponse = await HealthApi.healthCheck(
89407
+ apiConfig.baseUrl
89408
+ );
89409
+ const version = HealthApi.getServerVersion(healthResponse);
89410
+ setServerVersion(version);
89411
+ } catch (error) {
89412
+ console.error("Error fetching server version:", error);
89413
+ setServerVersion("Unknown (connection error)");
89414
+ }
89415
+ };
89416
+ fetchAppInfo();
89417
+ fetchServerVersion();
89418
+ }, []);
89419
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { mt: 6, mb: 4, children: [
89420
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$1, { variant: "h5", children: [
89421
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faDownload }),
89422
+ "Application Updates"
89423
+ ] }),
89424
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SectionDescription$1, { variant: "body1", children: "Check for updates and view information about your Local Operator installation" }),
89425
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, spacing: 2, sx: { mb: 3 }, children: [
89426
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, sm: 6, md: 3, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoBox$1, { children: [
89427
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoLabel$1, { variant: "subtitle2", children: [
89428
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "The version of the Local Operator user interface application", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
89429
+ FontAwesomeIcon,
89430
+ {
89431
+ icon: faInfoCircle,
89432
+ style: { marginRight: 8 }
89433
+ }
89434
+ ) }),
89435
+ "Application Version"
89436
+ ] }),
89437
+ /* @__PURE__ */ jsxRuntimeExports.jsx(InfoValue$1, { variant: "body1", children: appVersion })
89438
+ ] }) }),
89439
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, sm: 6, md: 3, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoBox$1, { children: [
89440
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoLabel$1, { variant: "subtitle2", children: [
89441
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "The version of the Local Operator API server. This backend service handles all API requests and model interactions.", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
89442
+ FontAwesomeIcon,
89443
+ {
89444
+ icon: faInfoCircle,
89445
+ style: { marginRight: 8 }
89446
+ }
89447
+ ) }),
89448
+ "Server Version"
89449
+ ] }),
89450
+ /* @__PURE__ */ jsxRuntimeExports.jsx(InfoValue$1, { variant: "body1", children: serverVersion })
89451
+ ] }) }),
89452
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, sm: 6, md: 3, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoBox$1, { children: [
89453
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoLabel$1, { variant: "subtitle2", children: [
89454
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "The operating system and architecture your application is running on. This affects compatibility and performance.", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
89455
+ FontAwesomeIcon,
89456
+ {
89457
+ icon: faInfoCircle,
89458
+ style: { marginRight: 8 }
89459
+ }
89460
+ ) }),
89461
+ "Platform"
89462
+ ] }),
89463
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoValue$1, { variant: "body1", children: [
89464
+ platformInfo.platform,
89465
+ " (",
89466
+ platformInfo.arch,
89467
+ ")"
89468
+ ] })
89469
+ ] }) }),
89470
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, sm: 6, md: 3, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoBox$1, { children: [
89471
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoLabel$1, { variant: "subtitle2", children: [
89472
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "The JavaScript runtime environment that powers the backend processes of the application. Different versions may affect performance and feature availability.", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
89473
+ FontAwesomeIcon,
89474
+ {
89475
+ icon: faInfoCircle,
89476
+ style: { marginRight: 8 }
89477
+ }
89478
+ ) }),
89479
+ "Node.js"
89480
+ ] }),
89481
+ /* @__PURE__ */ jsxRuntimeExports.jsx(InfoValue$1, { variant: "body1", children: platformInfo.nodeVersion })
89482
+ ] }) }),
89483
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, sm: 6, md: 3, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoBox$1, { children: [
89484
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoLabel$1, { variant: "subtitle2", children: [
89485
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { title: "The framework that enables this desktop application to run across different operating systems using web technologies. It combines Chromium and Node.js into a single runtime.", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
89486
+ FontAwesomeIcon,
89487
+ {
89488
+ icon: faInfoCircle,
89489
+ style: { marginRight: 8 }
89490
+ }
89491
+ ) }),
89492
+ "Electron"
89493
+ ] }),
89494
+ /* @__PURE__ */ jsxRuntimeExports.jsx(InfoValue$1, { variant: "body1", children: platformInfo.electronVersion })
89495
+ ] }) })
89496
+ ] }),
89497
+ /* @__PURE__ */ jsxRuntimeExports.jsx(AppUpdates, {})
89498
+ ] });
89499
+ };
88434
89500
  const CredentialCardContainer = styled$1(Paper)(({ theme: theme2 }) => ({
88435
89501
  padding: theme2.spacing(2),
88436
89502
  height: "100%",
@@ -88972,6 +90038,11 @@ const DEFAULT_SETTINGS_SECTIONS = [
88972
90038
  id: "credentials",
88973
90039
  label: "API Credentials",
88974
90040
  icon: faKey
90041
+ },
90042
+ {
90043
+ id: "updates",
90044
+ label: "Application Updates",
90045
+ icon: faDownload
88975
90046
  }
88976
90047
  // Future sections can be added here
88977
90048
  // {
@@ -89392,9 +90463,11 @@ const SettingsPage = () => {
89392
90463
  const [isScrolling, setIsScrolling] = reactExports.useState(false);
89393
90464
  const generalSectionRef = reactExports.useRef(null);
89394
90465
  const credentialsSectionRef = reactExports.useRef(null);
90466
+ const updatesSectionRef = reactExports.useRef(null);
89395
90467
  const sectionRefs = reactExports.useRef({
89396
90468
  general: generalSectionRef,
89397
- credentials: credentialsSectionRef
90469
+ credentials: credentialsSectionRef,
90470
+ updates: updatesSectionRef
89398
90471
  }).current;
89399
90472
  const handleSelectSection = (sectionId) => {
89400
90473
  setActiveSection(sectionId);
@@ -89697,7 +90770,8 @@ const SettingsPage = () => {
89697
90770
  ),
89698
90771
  /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body1", color: "text.secondary", mt: 1, mb: 3, children: "Manage your API keys for various services and integrations" }),
89699
90772
  /* @__PURE__ */ jsxRuntimeExports.jsx(Credentials, {})
89700
- ] })
90773
+ ] }),
90774
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { ref: updatesSectionRef, children: /* @__PURE__ */ jsxRuntimeExports.jsx(AppUpdatesSection, {}) })
89701
90775
  ] })
89702
90776
  ] })
89703
90777
  ] });
@@ -89743,6 +90817,7 @@ const App = () => {
89743
90817
  /* @__PURE__ */ jsxRuntimeExports.jsx(CssBaseline, {}),
89744
90818
  /* @__PURE__ */ jsxRuntimeExports.jsx(ModelsInitializer, {}),
89745
90819
  /* @__PURE__ */ jsxRuntimeExports.jsx(OnboardingModal, { open: isOnboardingActive }),
90820
+ /* @__PURE__ */ jsxRuntimeExports.jsx(UpdateNotification, {}),
89746
90821
  /* @__PURE__ */ jsxRuntimeExports.jsx(SidebarNavigation, {}),
89747
90822
  /* @__PURE__ */ jsxRuntimeExports.jsx(MainContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Routes, { children: [
89748
90823
  /* @__PURE__ */ jsxRuntimeExports.jsx(Route, { path: "/", element: /* @__PURE__ */ jsxRuntimeExports.jsx(Navigate, { to: "/chat", replace: true }) }),