gsintegrations 0.0.490 → 0.0.492

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.
@@ -1879,13 +1879,13 @@ function blend(background, overlay, opacity, gamma = 1.0) {
1879
1879
  });
1880
1880
  }
1881
1881
 
1882
- const _excluded$2y = ["value"];
1882
+ const _excluded$2w = ["value"];
1883
1883
  const RtlContext = /*#__PURE__*/React__namespace.createContext();
1884
1884
  function RtlProvider(_ref) {
1885
1885
  let {
1886
1886
  value
1887
1887
  } = _ref,
1888
- props = _objectWithoutPropertiesLoose(_ref, _excluded$2y);
1888
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$2w);
1889
1889
  return /*#__PURE__*/require$$2$1.jsx(RtlContext.Provider, _extends$1({
1890
1890
  value: value != null ? value : true
1891
1891
  }, props));
@@ -4501,7 +4501,7 @@ var deepmerge = /*#__PURE__*/Object.freeze({
4501
4501
  isPlainObject: isPlainObject
4502
4502
  });
4503
4503
 
4504
- const _excluded$2x = ["values", "unit", "step"];
4504
+ const _excluded$2v = ["values", "unit", "step"];
4505
4505
  const sortBreakpointsValues = values => {
4506
4506
  const breakpointsAsArray = Object.keys(values).map(key => ({
4507
4507
  key,
@@ -4535,7 +4535,7 @@ function createBreakpoints(breakpoints) {
4535
4535
  unit = 'px',
4536
4536
  step = 5
4537
4537
  } = breakpoints,
4538
- other = _objectWithoutPropertiesLoose(breakpoints, _excluded$2x);
4538
+ other = _objectWithoutPropertiesLoose(breakpoints, _excluded$2v);
4539
4539
  const sortedValues = sortBreakpointsValues(values);
4540
4540
  const keys = Object.keys(sortedValues);
4541
4541
  function up(key) {
@@ -5706,7 +5706,7 @@ function applyStyles$2(key, styles) {
5706
5706
  return {};
5707
5707
  }
5708
5708
 
5709
- const _excluded$2w = ["breakpoints", "palette", "spacing", "shape"];
5709
+ const _excluded$2u = ["breakpoints", "palette", "spacing", "shape"];
5710
5710
  function createTheme$2(options = {}, ...args) {
5711
5711
  const {
5712
5712
  breakpoints: breakpointsInput = {},
@@ -5714,7 +5714,7 @@ function createTheme$2(options = {}, ...args) {
5714
5714
  spacing: spacingInput,
5715
5715
  shape: shapeInput = {}
5716
5716
  } = options,
5717
- other = _objectWithoutPropertiesLoose(options, _excluded$2w);
5717
+ other = _objectWithoutPropertiesLoose(options, _excluded$2u);
5718
5718
  const breakpoints = createBreakpoints(breakpointsInput);
5719
5719
  const spacing = createSpacing(spacingInput);
5720
5720
  let muiTheme = deepmerge$1({
@@ -5814,7 +5814,7 @@ process.env.NODE_ENV !== "production" ? GlobalStyles$1.propTypes /* remove-propt
5814
5814
  themeId: PropTypes.string
5815
5815
  } : void 0;
5816
5816
 
5817
- const _excluded$2v = ["sx"];
5817
+ const _excluded$2t = ["sx"];
5818
5818
  const splitProps = props => {
5819
5819
  var _props$theme$unstable, _props$theme;
5820
5820
  const result = {
@@ -5835,7 +5835,7 @@ function extendSxProp(props) {
5835
5835
  const {
5836
5836
  sx: inSx
5837
5837
  } = props,
5838
- other = _objectWithoutPropertiesLoose(props, _excluded$2v);
5838
+ other = _objectWithoutPropertiesLoose(props, _excluded$2t);
5839
5839
  const {
5840
5840
  systemProps,
5841
5841
  otherProps
@@ -5885,7 +5885,7 @@ const createClassNameGenerator$1 = () => {
5885
5885
  const ClassNameGenerator$2 = createClassNameGenerator$1();
5886
5886
  var ClassNameGenerator$3 = ClassNameGenerator$2;
5887
5887
 
5888
- const _excluded$2u = ["className", "component"];
5888
+ const _excluded$2s = ["className", "component"];
5889
5889
  function createBox(options = {}) {
5890
5890
  const {
5891
5891
  themeId,
@@ -5903,7 +5903,7 @@ function createBox(options = {}) {
5903
5903
  className,
5904
5904
  component = 'div'
5905
5905
  } = _extendSxProp,
5906
- other = _objectWithoutPropertiesLoose(_extendSxProp, _excluded$2u);
5906
+ other = _objectWithoutPropertiesLoose(_extendSxProp, _excluded$2s);
5907
5907
  return /*#__PURE__*/require$$2$1.jsx(BoxRoot, _extends$1({
5908
5908
  as: component,
5909
5909
  ref: ref,
@@ -6282,7 +6282,7 @@ var getDisplayName = /*#__PURE__*/Object.freeze({
6282
6282
  getFunctionName: getFunctionName
6283
6283
  });
6284
6284
 
6285
- const _excluded$2t = ["ownerState"],
6285
+ const _excluded$2r = ["ownerState"],
6286
6286
  _excluded2$i = ["variants"],
6287
6287
  _excluded3$6 = ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"];
6288
6288
  function isEmpty$3(obj) {
@@ -6333,7 +6333,7 @@ function processStyleArg$1(callableStyle, _ref, layerName) {
6333
6333
  let {
6334
6334
  ownerState
6335
6335
  } = _ref,
6336
- props = _objectWithoutPropertiesLoose(_ref, _excluded$2t);
6336
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$2r);
6337
6337
  const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends$1({
6338
6338
  ownerState
6339
6339
  }, props)) : callableStyle;
@@ -7559,7 +7559,7 @@ function resolveComponentProps$1(componentProps, ownerState, slotState) {
7559
7559
  return componentProps;
7560
7560
  }
7561
7561
 
7562
- const _excluded$2s = ["elementType", "externalSlotProps", "ownerState", "skipResolvingSlotProps"];
7562
+ const _excluded$2q = ["elementType", "externalSlotProps", "ownerState", "skipResolvingSlotProps"];
7563
7563
  /**
7564
7564
  * @ignore - do not document.
7565
7565
  * Builds the props to be passed into the slot of an unstyled component.
@@ -7576,7 +7576,7 @@ function useSlotProps$1(parameters) {
7576
7576
  ownerState,
7577
7577
  skipResolvingSlotProps = false
7578
7578
  } = parameters,
7579
- rest = _objectWithoutPropertiesLoose(parameters, _excluded$2s);
7579
+ rest = _objectWithoutPropertiesLoose(parameters, _excluded$2q);
7580
7580
  const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps$1(externalSlotProps, ownerState);
7581
7581
  const {
7582
7582
  props: mergedProps,
@@ -7874,7 +7874,7 @@ function toPropertyKey$3(t) {
7874
7874
  return "symbol" == _typeof$1(i) ? i : i + "";
7875
7875
  }
7876
7876
 
7877
- const _excluded$2r = ["className", "component", "disableGutters", "fixed", "maxWidth", "classes"];
7877
+ const _excluded$2p = ["className", "component", "disableGutters", "fixed", "maxWidth", "classes"];
7878
7878
  const defaultTheme$4 = createTheme$2();
7879
7879
  const defaultCreateStyledComponent$1 = systemStyled('div', {
7880
7880
  name: 'MuiContainer',
@@ -7891,7 +7891,7 @@ const useThemePropsDefault$1 = inProps => useThemeProps$1({
7891
7891
  name: 'MuiContainer',
7892
7892
  defaultTheme: defaultTheme$4
7893
7893
  });
7894
- const useUtilityClasses$1Y = (ownerState, componentName) => {
7894
+ const useUtilityClasses$1W = (ownerState, componentName) => {
7895
7895
  const getContainerUtilityClass = slot => {
7896
7896
  return generateUtilityClass$1(componentName, slot);
7897
7897
  };
@@ -7970,7 +7970,7 @@ function createContainer$1(options = {}) {
7970
7970
  fixed = false,
7971
7971
  maxWidth = 'lg'
7972
7972
  } = props,
7973
- other = _objectWithoutPropertiesLoose(props, _excluded$2r);
7973
+ other = _objectWithoutPropertiesLoose(props, _excluded$2p);
7974
7974
  const ownerState = _extends$1({}, props, {
7975
7975
  component,
7976
7976
  disableGutters,
@@ -7979,7 +7979,7 @@ function createContainer$1(options = {}) {
7979
7979
  });
7980
7980
 
7981
7981
  // @ts-ignore module augmentation fails if custom breakpoints are used
7982
- const classes = useUtilityClasses$1Y(ownerState, componentName);
7982
+ const classes = useUtilityClasses$1W(ownerState, componentName);
7983
7983
  return (
7984
7984
  /*#__PURE__*/
7985
7985
  // @ts-ignore theme is injected by the styled util
@@ -8006,7 +8006,7 @@ function createContainer$1(options = {}) {
8006
8006
  return Container;
8007
8007
  }
8008
8008
 
8009
- const _excluded$2q = ["component", "direction", "spacing", "divider", "children", "className", "useFlexGap"];
8009
+ const _excluded$2o = ["component", "direction", "spacing", "divider", "children", "className", "useFlexGap"];
8010
8010
  const defaultTheme$3 = createTheme$2();
8011
8011
  // widening Theme to any so that the consumer can own the theme structure.
8012
8012
  const defaultCreateStyledComponent = systemStyled('div', {
@@ -8139,7 +8139,7 @@ function createStack(options = {}) {
8139
8139
  className,
8140
8140
  useFlexGap = false
8141
8141
  } = props,
8142
- other = _objectWithoutPropertiesLoose(props, _excluded$2q);
8142
+ other = _objectWithoutPropertiesLoose(props, _excluded$2o);
8143
8143
  const ownerState = {
8144
8144
  direction,
8145
8145
  spacing,
@@ -8313,7 +8313,7 @@ const green = {
8313
8313
  };
8314
8314
  var green$1 = green;
8315
8315
 
8316
- const _excluded$2p = ["mode", "contrastThreshold", "tonalOffset"];
8316
+ const _excluded$2n = ["mode", "contrastThreshold", "tonalOffset"];
8317
8317
  const light = {
8318
8318
  // The colors used to style the text.
8319
8319
  text: {
@@ -8482,7 +8482,7 @@ function createPalette(palette) {
8482
8482
  contrastThreshold = 3,
8483
8483
  tonalOffset = 0.2
8484
8484
  } = palette,
8485
- other = _objectWithoutPropertiesLoose(palette, _excluded$2p);
8485
+ other = _objectWithoutPropertiesLoose(palette, _excluded$2n);
8486
8486
  const primary = palette.primary || getDefaultPrimary(mode);
8487
8487
  const secondary = palette.secondary || getDefaultSecondary(mode);
8488
8488
  const error = palette.error || getDefaultError(mode);
@@ -8606,7 +8606,7 @@ const theme2 = createTheme({ palette: {
8606
8606
  return paletteOutput;
8607
8607
  }
8608
8608
 
8609
- const _excluded$2o = ["fontFamily", "fontSize", "fontWeightLight", "fontWeightRegular", "fontWeightMedium", "fontWeightBold", "htmlFontSize", "allVariants", "pxToRem"];
8609
+ const _excluded$2m = ["fontFamily", "fontSize", "fontWeightLight", "fontWeightRegular", "fontWeightMedium", "fontWeightBold", "htmlFontSize", "allVariants", "pxToRem"];
8610
8610
  function round$3(value) {
8611
8611
  return Math.round(value * 1e5) / 1e5;
8612
8612
  }
@@ -8637,7 +8637,7 @@ function createTypography(palette, typography) {
8637
8637
  allVariants,
8638
8638
  pxToRem: pxToRem2
8639
8639
  } = _ref,
8640
- other = _objectWithoutPropertiesLoose(_ref, _excluded$2o);
8640
+ other = _objectWithoutPropertiesLoose(_ref, _excluded$2m);
8641
8641
  if (process.env.NODE_ENV !== 'production') {
8642
8642
  if (typeof fontSize !== 'number') {
8643
8643
  console.error('MUI: `fontSize` is required to be a number.');
@@ -8705,7 +8705,7 @@ function createShadow(...px) {
8705
8705
  const shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];
8706
8706
  var shadows$1 = shadows;
8707
8707
 
8708
- const _excluded$2n = ["duration", "easing", "delay"];
8708
+ const _excluded$2l = ["duration", "easing", "delay"];
8709
8709
  // Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves
8710
8710
  // to learn the context in which each easing should be used.
8711
8711
  const easing = {
@@ -8756,7 +8756,7 @@ function createTransitions(inputTransitions) {
8756
8756
  easing: easingOption = mergedEasing.easeInOut,
8757
8757
  delay = 0
8758
8758
  } = options,
8759
- other = _objectWithoutPropertiesLoose(options, _excluded$2n);
8759
+ other = _objectWithoutPropertiesLoose(options, _excluded$2l);
8760
8760
  if (process.env.NODE_ENV !== 'production') {
8761
8761
  const isString = value => typeof value === 'string';
8762
8762
  // IE11 support, replace with Number.isNaN
@@ -8806,7 +8806,7 @@ const zIndex$1 = {
8806
8806
  };
8807
8807
  var zIndex$2 = zIndex$1;
8808
8808
 
8809
- const _excluded$2m = ["breakpoints", "mixins", "spacing", "palette", "transitions", "typography", "shape"];
8809
+ const _excluded$2k = ["breakpoints", "mixins", "spacing", "palette", "transitions", "typography", "shape"];
8810
8810
  function createTheme(options = {}, ...args) {
8811
8811
  const {
8812
8812
  mixins: mixinsInput = {},
@@ -8814,7 +8814,7 @@ function createTheme(options = {}, ...args) {
8814
8814
  transitions: transitionsInput = {},
8815
8815
  typography: typographyInput = {}
8816
8816
  } = options,
8817
- other = _objectWithoutPropertiesLoose(options, _excluded$2m);
8817
+ other = _objectWithoutPropertiesLoose(options, _excluded$2k);
8818
8818
  if (options.vars &&
8819
8819
  // The error should throw only for the root theme creation because user is not allowed to use a custom node `vars`.
8820
8820
  // `generateCssVars` is the closest identifier for checking that the `options` is a result of `extendTheme` with CSS variables so that user can create new theme for nested ThemeProvider.
@@ -8984,7 +8984,7 @@ var _capitalize = _interopRequireDefault$1H(require$$5);
8984
8984
  var _getDisplayName = _interopRequireDefault$1H(require$$6);
8985
8985
  var _createTheme = _interopRequireDefault$1H(require$$7);
8986
8986
  var _styleFunctionSx = _interopRequireDefault$1H(require$$8);
8987
- const _excluded$2l = ["ownerState"],
8987
+ const _excluded$2j = ["ownerState"],
8988
8988
  _excluded2$h = ["variants"],
8989
8989
  _excluded3$5 = ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"];
8990
8990
  /* eslint-disable no-underscore-dangle */
@@ -9038,7 +9038,7 @@ function processStyleArg(callableStyle, _ref, layerName) {
9038
9038
  let {
9039
9039
  ownerState
9040
9040
  } = _ref,
9041
- props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded$2l);
9041
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded$2j);
9042
9042
  const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle((0, _extends2.default)({
9043
9043
  ownerState
9044
9044
  }, props)) : callableStyle;
@@ -9246,12 +9246,12 @@ const styled = _default({
9246
9246
  });
9247
9247
  var styled$1 = styled;
9248
9248
 
9249
- const _excluded$2k = ["theme"];
9249
+ const _excluded$2i = ["theme"];
9250
9250
  function ThemeProvider$1(_ref) {
9251
9251
  let {
9252
9252
  theme: themeInput
9253
9253
  } = _ref,
9254
- props = _objectWithoutPropertiesLoose(_ref, _excluded$2k);
9254
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$2i);
9255
9255
  const scopedTheme = themeInput[THEME_ID];
9256
9256
  let finalTheme = scopedTheme || themeInput;
9257
9257
  if (typeof themeInput !== 'function') {
@@ -10752,7 +10752,7 @@ function getTransitionProps(props, options) {
10752
10752
  };
10753
10753
  }
10754
10754
 
10755
- const _excluded$2j = ["addEndListener", "appear", "children", "easing", "in", "onEnter", "onEntered", "onEntering", "onExit", "onExited", "onExiting", "style", "timeout", "TransitionComponent"];
10755
+ const _excluded$2h = ["addEndListener", "appear", "children", "easing", "in", "onEnter", "onEntered", "onEntering", "onExit", "onExited", "onExiting", "style", "timeout", "TransitionComponent"];
10756
10756
  function getScale(value) {
10757
10757
  return `scale(${value}, ${value ** 2})`;
10758
10758
  }
@@ -10796,7 +10796,7 @@ const Grow = /*#__PURE__*/React__namespace.forwardRef(function Grow(props, ref)
10796
10796
  // eslint-disable-next-line react/prop-types
10797
10797
  TransitionComponent = Transition$1
10798
10798
  } = props,
10799
- other = _objectWithoutPropertiesLoose(props, _excluded$2j);
10799
+ other = _objectWithoutPropertiesLoose(props, _excluded$2h);
10800
10800
  const timer = useTimeout$1();
10801
10801
  const autoTimeout = React__namespace.useRef();
10802
10802
  const theme = useTheme$1();
@@ -12895,7 +12895,7 @@ function getPopperUtilityClass(slot) {
12895
12895
  }
12896
12896
  generateUtilityClasses$1('MuiPopper', ['root']);
12897
12897
 
12898
- const _excluded$2i = ["anchorEl", "children", "direction", "disablePortal", "modifiers", "open", "placement", "popperOptions", "popperRef", "slotProps", "slots", "TransitionProps", "ownerState"],
12898
+ const _excluded$2g = ["anchorEl", "children", "direction", "disablePortal", "modifiers", "open", "placement", "popperOptions", "popperRef", "slotProps", "slots", "TransitionProps", "ownerState"],
12899
12899
  _excluded2$g = ["anchorEl", "children", "container", "direction", "disablePortal", "keepMounted", "modifiers", "open", "placement", "popperOptions", "popperRef", "style", "transition", "slotProps", "slots"];
12900
12900
  function flipPlacement(placement, direction) {
12901
12901
  if (direction === 'ltr') {
@@ -12923,7 +12923,7 @@ function isHTMLElement$2(element) {
12923
12923
  function isVirtualElement(element) {
12924
12924
  return !isHTMLElement$2(element);
12925
12925
  }
12926
- const useUtilityClasses$1X = ownerState => {
12926
+ const useUtilityClasses$1V = ownerState => {
12927
12927
  const {
12928
12928
  classes
12929
12929
  } = ownerState;
@@ -12951,7 +12951,7 @@ const PopperTooltip = /*#__PURE__*/React__namespace.forwardRef(function PopperTo
12951
12951
  // @ts-ignore internal logic
12952
12952
  // prevent from spreading to DOM, it can come from the parent component e.g. Select.
12953
12953
  } = props,
12954
- other = _objectWithoutPropertiesLoose(props, _excluded$2i);
12954
+ other = _objectWithoutPropertiesLoose(props, _excluded$2g);
12955
12955
  const tooltipRef = React__namespace.useRef(null);
12956
12956
  const ownRef = useForkRef$1(tooltipRef, forwardedRef);
12957
12957
  const popperRef = React__namespace.useRef(null);
@@ -13036,7 +13036,7 @@ const PopperTooltip = /*#__PURE__*/React__namespace.forwardRef(function PopperTo
13036
13036
  if (TransitionProps !== null) {
13037
13037
  childProps.TransitionProps = TransitionProps;
13038
13038
  }
13039
- const classes = useUtilityClasses$1X(props);
13039
+ const classes = useUtilityClasses$1V(props);
13040
13040
  const Root = (_slots$root = slots.root) != null ? _slots$root : 'div';
13041
13041
  const rootProps = useSlotProps$1({
13042
13042
  elementType: Root,
@@ -13255,7 +13255,7 @@ process.env.NODE_ENV !== "production" ? Popper$1.propTypes /* remove-proptypes *
13255
13255
  } : void 0;
13256
13256
  var BasePopper = Popper$1;
13257
13257
 
13258
- const _excluded$2h = ["anchorEl", "component", "components", "componentsProps", "container", "disablePortal", "keepMounted", "modifiers", "open", "placement", "popperOptions", "popperRef", "transition", "slots", "slotProps"];
13258
+ const _excluded$2f = ["anchorEl", "component", "components", "componentsProps", "container", "disablePortal", "keepMounted", "modifiers", "open", "placement", "popperOptions", "popperRef", "transition", "slots", "slotProps"];
13259
13259
  const PopperRoot = styled$1(BasePopper, {
13260
13260
  name: 'MuiPopper',
13261
13261
  slot: 'Root',
@@ -13298,7 +13298,7 @@ const Popper = /*#__PURE__*/React__namespace.forwardRef(function Popper(inProps,
13298
13298
  slots,
13299
13299
  slotProps
13300
13300
  } = props,
13301
- other = _objectWithoutPropertiesLoose(props, _excluded$2h);
13301
+ other = _objectWithoutPropertiesLoose(props, _excluded$2f);
13302
13302
  const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;
13303
13303
  const otherProps = _extends$1({
13304
13304
  anchorEl,
@@ -13458,11 +13458,11 @@ function getTooltipUtilityClass(slot) {
13458
13458
  const tooltipClasses = generateUtilityClasses$1('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);
13459
13459
  var tooltipClasses$1 = tooltipClasses;
13460
13460
 
13461
- const _excluded$2g = ["arrow", "children", "classes", "components", "componentsProps", "describeChild", "disableFocusListener", "disableHoverListener", "disableInteractive", "disableTouchListener", "enterDelay", "enterNextDelay", "enterTouchDelay", "followCursor", "id", "leaveDelay", "leaveTouchDelay", "onClose", "onOpen", "open", "placement", "PopperComponent", "PopperProps", "slotProps", "slots", "title", "TransitionComponent", "TransitionProps"];
13461
+ const _excluded$2e = ["arrow", "children", "classes", "components", "componentsProps", "describeChild", "disableFocusListener", "disableHoverListener", "disableInteractive", "disableTouchListener", "enterDelay", "enterNextDelay", "enterTouchDelay", "followCursor", "id", "leaveDelay", "leaveTouchDelay", "onClose", "onOpen", "open", "placement", "PopperComponent", "PopperProps", "slotProps", "slots", "title", "TransitionComponent", "TransitionProps"];
13462
13462
  function round$1(value) {
13463
13463
  return Math.round(value * 1e5) / 1e5;
13464
13464
  }
13465
- const useUtilityClasses$1W = ownerState => {
13465
+ const useUtilityClasses$1U = ownerState => {
13466
13466
  const {
13467
13467
  classes,
13468
13468
  disableInteractive,
@@ -13680,7 +13680,7 @@ const Tooltip = /*#__PURE__*/React__namespace.forwardRef(function Tooltip(inProp
13680
13680
  TransitionComponent: TransitionComponentProp = Grow$1,
13681
13681
  TransitionProps
13682
13682
  } = props,
13683
- other = _objectWithoutPropertiesLoose(props, _excluded$2g);
13683
+ other = _objectWithoutPropertiesLoose(props, _excluded$2e);
13684
13684
 
13685
13685
  // to prevent runtime errors, developers will need to provide a child as a React element anyway.
13686
13686
  const children = /*#__PURE__*/React__namespace.isValidElement(childrenProp) ? childrenProp : /*#__PURE__*/require$$2$1.jsx("span", {
@@ -13956,7 +13956,7 @@ const Tooltip = /*#__PURE__*/React__namespace.forwardRef(function Tooltip(inProp
13956
13956
  PopperComponentProp,
13957
13957
  touch: ignoreNonTouchEvents.current
13958
13958
  });
13959
- const classes = useUtilityClasses$1W(ownerState);
13959
+ const classes = useUtilityClasses$1U(ownerState);
13960
13960
  const PopperComponent = (_ref = (_slots$popper = slots.popper) != null ? _slots$popper : components.Popper) != null ? _ref : TooltipPopper;
13961
13961
  const TransitionComponent = (_ref2 = (_ref3 = (_slots$transition = slots.transition) != null ? _slots$transition : components.Transition) != null ? _ref3 : TransitionComponentProp) != null ? _ref2 : Grow$1;
13962
13962
  const TooltipComponent = (_ref4 = (_slots$tooltip = slots.tooltip) != null ? _slots$tooltip : components.Tooltip) != null ? _ref4 : TooltipTooltip;
@@ -14221,8 +14221,8 @@ function getSvgIconUtilityClass(slot) {
14221
14221
  }
14222
14222
  generateUtilityClasses$1('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);
14223
14223
 
14224
- const _excluded$2f = ["children", "className", "color", "component", "fontSize", "htmlColor", "inheritViewBox", "titleAccess", "viewBox"];
14225
- const useUtilityClasses$1V = ownerState => {
14224
+ const _excluded$2d = ["children", "className", "color", "component", "fontSize", "htmlColor", "inheritViewBox", "titleAccess", "viewBox"];
14225
+ const useUtilityClasses$1T = ownerState => {
14226
14226
  const {
14227
14227
  color,
14228
14228
  fontSize,
@@ -14289,7 +14289,7 @@ const SvgIcon = /*#__PURE__*/React__namespace.forwardRef(function SvgIcon(inProp
14289
14289
  titleAccess,
14290
14290
  viewBox = '0 0 24 24'
14291
14291
  } = props,
14292
- other = _objectWithoutPropertiesLoose(props, _excluded$2f);
14292
+ other = _objectWithoutPropertiesLoose(props, _excluded$2d);
14293
14293
  const hasSvgAsChild = /*#__PURE__*/React__namespace.isValidElement(children) && children.type === 'svg';
14294
14294
  const ownerState = _extends$1({}, props, {
14295
14295
  color,
@@ -14304,7 +14304,7 @@ const SvgIcon = /*#__PURE__*/React__namespace.forwardRef(function SvgIcon(inProp
14304
14304
  if (!inheritViewBox) {
14305
14305
  more.viewBox = viewBox;
14306
14306
  }
14307
- const classes = useUtilityClasses$1V(ownerState);
14307
+ const classes = useUtilityClasses$1T(ownerState);
14308
14308
  return /*#__PURE__*/require$$2$1.jsxs(SvgIconRoot, _extends$1({
14309
14309
  as: component,
14310
14310
  className: clsx(classes.root, className),
@@ -14486,8 +14486,8 @@ function getCollapseUtilityClass(slot) {
14486
14486
  }
14487
14487
  generateUtilityClasses$1('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);
14488
14488
 
14489
- const _excluded$2e = ["addEndListener", "children", "className", "collapsedSize", "component", "easing", "in", "onEnter", "onEntered", "onEntering", "onExit", "onExited", "onExiting", "orientation", "style", "timeout", "TransitionComponent"];
14490
- const useUtilityClasses$1U = ownerState => {
14489
+ const _excluded$2c = ["addEndListener", "children", "className", "collapsedSize", "component", "easing", "in", "onEnter", "onEntered", "onEntering", "onExit", "onExited", "onExiting", "orientation", "style", "timeout", "TransitionComponent"];
14490
+ const useUtilityClasses$1S = ownerState => {
14491
14491
  const {
14492
14492
  orientation,
14493
14493
  classes
@@ -14586,12 +14586,12 @@ const Collapse = /*#__PURE__*/React__namespace.forwardRef(function Collapse(inPr
14586
14586
  // eslint-disable-next-line react/prop-types
14587
14587
  TransitionComponent = Transition$1
14588
14588
  } = props,
14589
- other = _objectWithoutPropertiesLoose(props, _excluded$2e);
14589
+ other = _objectWithoutPropertiesLoose(props, _excluded$2c);
14590
14590
  const ownerState = _extends$1({}, props, {
14591
14591
  orientation,
14592
14592
  collapsedSize: collapsedSizeProp
14593
14593
  });
14594
- const classes = useUtilityClasses$1U(ownerState);
14594
+ const classes = useUtilityClasses$1S(ownerState);
14595
14595
  const theme = useTheme$1();
14596
14596
  const timer = useTimeout$1();
14597
14597
  const wrapperRef = React__namespace.useRef(null);
@@ -14850,8 +14850,8 @@ function getPaperUtilityClass(slot) {
14850
14850
  }
14851
14851
  generateUtilityClasses$1('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);
14852
14852
 
14853
- const _excluded$2d = ["className", "component", "elevation", "square", "variant"];
14854
- const useUtilityClasses$1T = ownerState => {
14853
+ const _excluded$2b = ["className", "component", "elevation", "square", "variant"];
14854
+ const useUtilityClasses$1R = ownerState => {
14855
14855
  const {
14856
14856
  square,
14857
14857
  elevation,
@@ -14905,14 +14905,14 @@ const Paper = /*#__PURE__*/React__namespace.forwardRef(function Paper(inProps, r
14905
14905
  square = false,
14906
14906
  variant = 'elevation'
14907
14907
  } = props,
14908
- other = _objectWithoutPropertiesLoose(props, _excluded$2d);
14908
+ other = _objectWithoutPropertiesLoose(props, _excluded$2b);
14909
14909
  const ownerState = _extends$1({}, props, {
14910
14910
  component,
14911
14911
  elevation,
14912
14912
  square,
14913
14913
  variant
14914
14914
  });
14915
- const classes = useUtilityClasses$1T(ownerState);
14915
+ const classes = useUtilityClasses$1R(ownerState);
14916
14916
  if (process.env.NODE_ENV !== 'production') {
14917
14917
  // eslint-disable-next-line react-hooks/rules-of-hooks
14918
14918
  const theme = useTheme$1();
@@ -14991,7 +14991,7 @@ if (process.env.NODE_ENV !== 'production') {
14991
14991
  }
14992
14992
  var AccordionContext$1 = AccordionContext;
14993
14993
 
14994
- const _excluded$2c = ["className", "elementType", "ownerState", "externalForwardedProps", "getSlotOwnerState", "internalForwardedProps"],
14994
+ const _excluded$2a = ["className", "elementType", "ownerState", "externalForwardedProps", "getSlotOwnerState", "internalForwardedProps"],
14995
14995
  _excluded2$f = ["component", "slots", "slotProps"],
14996
14996
  _excluded3$4 = ["component"];
14997
14997
  /**
@@ -15024,7 +15024,7 @@ name, parameters) {
15024
15024
  getSlotOwnerState,
15025
15025
  internalForwardedProps
15026
15026
  } = parameters,
15027
- useSlotPropsParams = _objectWithoutPropertiesLoose(parameters, _excluded$2c);
15027
+ useSlotPropsParams = _objectWithoutPropertiesLoose(parameters, _excluded$2a);
15028
15028
  const {
15029
15029
  component: rootComponent,
15030
15030
  slots = {
@@ -15074,8 +15074,8 @@ function getAccordionUtilityClass(slot) {
15074
15074
  const accordionClasses = generateUtilityClasses$1('MuiAccordion', ['root', 'rounded', 'expanded', 'disabled', 'gutters', 'region']);
15075
15075
  var accordionClasses$1 = accordionClasses;
15076
15076
 
15077
- const _excluded$2b = ["children", "className", "defaultExpanded", "disabled", "disableGutters", "expanded", "onChange", "square", "slots", "slotProps", "TransitionComponent", "TransitionProps"];
15078
- const useUtilityClasses$1S = ownerState => {
15077
+ const _excluded$29 = ["children", "className", "defaultExpanded", "disabled", "disableGutters", "expanded", "onChange", "square", "slots", "slotProps", "TransitionComponent", "TransitionProps"];
15078
+ const useUtilityClasses$1Q = ownerState => {
15079
15079
  const {
15080
15080
  classes,
15081
15081
  square,
@@ -15196,7 +15196,7 @@ const Accordion = /*#__PURE__*/React__namespace.forwardRef(function Accordion(in
15196
15196
  TransitionComponent: TransitionComponentProp,
15197
15197
  TransitionProps: TransitionPropsProp
15198
15198
  } = props,
15199
- other = _objectWithoutPropertiesLoose(props, _excluded$2b);
15199
+ other = _objectWithoutPropertiesLoose(props, _excluded$29);
15200
15200
  const [expanded, setExpandedState] = useControlled$1({
15201
15201
  controlled: expandedProp,
15202
15202
  default: defaultExpanded,
@@ -15222,7 +15222,7 @@ const Accordion = /*#__PURE__*/React__namespace.forwardRef(function Accordion(in
15222
15222
  disableGutters,
15223
15223
  expanded
15224
15224
  });
15225
- const classes = useUtilityClasses$1S(ownerState);
15225
+ const classes = useUtilityClasses$1Q(ownerState);
15226
15226
  const backwardCompatibleSlots = _extends$1({
15227
15227
  transition: TransitionComponentProp
15228
15228
  }, slots);
@@ -15356,8 +15356,8 @@ function getAccordionDetailsUtilityClass(slot) {
15356
15356
  }
15357
15357
  generateUtilityClasses$1('MuiAccordionDetails', ['root']);
15358
15358
 
15359
- const _excluded$2a = ["className"];
15360
- const useUtilityClasses$1R = ownerState => {
15359
+ const _excluded$28 = ["className"];
15360
+ const useUtilityClasses$1P = ownerState => {
15361
15361
  const {
15362
15362
  classes
15363
15363
  } = ownerState;
@@ -15383,9 +15383,9 @@ const AccordionDetails = /*#__PURE__*/React__namespace.forwardRef(function Accor
15383
15383
  const {
15384
15384
  className
15385
15385
  } = props,
15386
- other = _objectWithoutPropertiesLoose(props, _excluded$2a);
15386
+ other = _objectWithoutPropertiesLoose(props, _excluded$28);
15387
15387
  const ownerState = props;
15388
- const classes = useUtilityClasses$1R(ownerState);
15388
+ const classes = useUtilityClasses$1P(ownerState);
15389
15389
  return /*#__PURE__*/require$$2$1.jsx(AccordionDetailsRoot, _extends$1({
15390
15390
  className: clsx(classes.root, className),
15391
15391
  ref: ref,
@@ -15497,7 +15497,7 @@ process.env.NODE_ENV !== "production" ? Ripple.propTypes = {
15497
15497
  const touchRippleClasses = generateUtilityClasses$1('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);
15498
15498
  var touchRippleClasses$1 = touchRippleClasses;
15499
15499
 
15500
- const _excluded$29 = ["center", "classes", "className"];
15500
+ const _excluded$27 = ["center", "classes", "className"];
15501
15501
  let _$6 = t => t,
15502
15502
  _t$3,
15503
15503
  _t2$3,
@@ -15626,7 +15626,7 @@ const TouchRipple = /*#__PURE__*/React__namespace.forwardRef(function TouchRippl
15626
15626
  classes = {},
15627
15627
  className
15628
15628
  } = props,
15629
- other = _objectWithoutPropertiesLoose(props, _excluded$29);
15629
+ other = _objectWithoutPropertiesLoose(props, _excluded$27);
15630
15630
  const [ripples, setRipples] = React__namespace.useState([]);
15631
15631
  const nextKey = React__namespace.useRef(0);
15632
15632
  const rippleCallback = React__namespace.useRef(null);
@@ -15822,8 +15822,8 @@ function getButtonBaseUtilityClass(slot) {
15822
15822
  const buttonBaseClasses = generateUtilityClasses$1('MuiButtonBase', ['root', 'disabled', 'focusVisible']);
15823
15823
  var buttonBaseClasses$1 = buttonBaseClasses;
15824
15824
 
15825
- const _excluded$28 = ["action", "centerRipple", "children", "className", "component", "disabled", "disableRipple", "disableTouchRipple", "focusRipple", "focusVisibleClassName", "LinkComponent", "onBlur", "onClick", "onContextMenu", "onDragLeave", "onFocus", "onFocusVisible", "onKeyDown", "onKeyUp", "onMouseDown", "onMouseLeave", "onMouseUp", "onTouchEnd", "onTouchMove", "onTouchStart", "tabIndex", "TouchRippleProps", "touchRippleRef", "type"];
15826
- const useUtilityClasses$1Q = ownerState => {
15825
+ const _excluded$26 = ["action", "centerRipple", "children", "className", "component", "disabled", "disableRipple", "disableTouchRipple", "focusRipple", "focusVisibleClassName", "LinkComponent", "onBlur", "onClick", "onContextMenu", "onDragLeave", "onFocus", "onFocusVisible", "onKeyDown", "onKeyUp", "onMouseDown", "onMouseLeave", "onMouseUp", "onTouchEnd", "onTouchMove", "onTouchStart", "tabIndex", "TouchRippleProps", "touchRippleRef", "type"];
15826
+ const useUtilityClasses$1O = ownerState => {
15827
15827
  const {
15828
15828
  disabled,
15829
15829
  focusVisible,
@@ -15923,7 +15923,7 @@ const ButtonBase = /*#__PURE__*/React__namespace.forwardRef(function ButtonBase(
15923
15923
  touchRippleRef,
15924
15924
  type
15925
15925
  } = props,
15926
- other = _objectWithoutPropertiesLoose(props, _excluded$28);
15926
+ other = _objectWithoutPropertiesLoose(props, _excluded$26);
15927
15927
  const buttonRef = React__namespace.useRef(null);
15928
15928
  const rippleRef = React__namespace.useRef(null);
15929
15929
  const handleRippleRef = useForkRef$1(rippleRef, touchRippleRef);
@@ -16090,7 +16090,7 @@ const ButtonBase = /*#__PURE__*/React__namespace.forwardRef(function ButtonBase(
16090
16090
  tabIndex,
16091
16091
  focusVisible
16092
16092
  });
16093
- const classes = useUtilityClasses$1Q(ownerState);
16093
+ const classes = useUtilityClasses$1O(ownerState);
16094
16094
  return /*#__PURE__*/require$$2$1.jsxs(ButtonBaseRoot, _extends$1({
16095
16095
  as: ComponentProp,
16096
16096
  className: clsx(classes.root, className),
@@ -16287,8 +16287,8 @@ function getAccordionSummaryUtilityClass(slot) {
16287
16287
  const accordionSummaryClasses = generateUtilityClasses$1('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);
16288
16288
  var accordionSummaryClasses$1 = accordionSummaryClasses;
16289
16289
 
16290
- const _excluded$27 = ["children", "className", "expandIcon", "focusVisibleClassName", "onClick"];
16291
- const useUtilityClasses$1P = ownerState => {
16290
+ const _excluded$25 = ["children", "className", "expandIcon", "focusVisibleClassName", "onClick"];
16291
+ const useUtilityClasses$1N = ownerState => {
16292
16292
  const {
16293
16293
  classes,
16294
16294
  expanded,
@@ -16388,7 +16388,7 @@ const AccordionSummary = /*#__PURE__*/React__namespace.forwardRef(function Accor
16388
16388
  focusVisibleClassName,
16389
16389
  onClick
16390
16390
  } = props,
16391
- other = _objectWithoutPropertiesLoose(props, _excluded$27);
16391
+ other = _objectWithoutPropertiesLoose(props, _excluded$25);
16392
16392
  const {
16393
16393
  disabled = false,
16394
16394
  disableGutters,
@@ -16408,7 +16408,7 @@ const AccordionSummary = /*#__PURE__*/React__namespace.forwardRef(function Accor
16408
16408
  disabled,
16409
16409
  disableGutters
16410
16410
  });
16411
- const classes = useUtilityClasses$1P(ownerState);
16411
+ const classes = useUtilityClasses$1N(ownerState);
16412
16412
  return /*#__PURE__*/require$$2$1.jsxs(AccordionSummaryRoot, _extends$1({
16413
16413
  focusRipple: false,
16414
16414
  disableRipple: true,
@@ -16485,8 +16485,8 @@ function getIconButtonUtilityClass(slot) {
16485
16485
  const iconButtonClasses = generateUtilityClasses$1('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);
16486
16486
  var iconButtonClasses$1 = iconButtonClasses;
16487
16487
 
16488
- const _excluded$26 = ["edge", "children", "className", "color", "disabled", "disableFocusRipple", "size"];
16489
- const useUtilityClasses$1O = ownerState => {
16488
+ const _excluded$24 = ["edge", "children", "className", "color", "disabled", "disableFocusRipple", "size"];
16489
+ const useUtilityClasses$1M = ownerState => {
16490
16490
  const {
16491
16491
  classes,
16492
16492
  disabled,
@@ -16586,7 +16586,7 @@ const IconButton = /*#__PURE__*/React__namespace.forwardRef(function IconButton(
16586
16586
  disableFocusRipple = false,
16587
16587
  size = 'medium'
16588
16588
  } = props,
16589
- other = _objectWithoutPropertiesLoose(props, _excluded$26);
16589
+ other = _objectWithoutPropertiesLoose(props, _excluded$24);
16590
16590
  const ownerState = _extends$1({}, props, {
16591
16591
  edge,
16592
16592
  color,
@@ -16594,7 +16594,7 @@ const IconButton = /*#__PURE__*/React__namespace.forwardRef(function IconButton(
16594
16594
  disableFocusRipple,
16595
16595
  size
16596
16596
  });
16597
- const classes = useUtilityClasses$1O(ownerState);
16597
+ const classes = useUtilityClasses$1M(ownerState);
16598
16598
  return /*#__PURE__*/require$$2$1.jsx(IconButtonRoot, _extends$1({
16599
16599
  className: clsx(classes.root, className),
16600
16600
  centerRipple: true,
@@ -16695,8 +16695,8 @@ var ClearIcon$1 = createSvgIcon( /*#__PURE__*/require$$2$1.jsx("path", {
16695
16695
  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"
16696
16696
  }), 'Close');
16697
16697
 
16698
- const _excluded$25 = ["action", "children", "className", "closeText", "color", "components", "componentsProps", "icon", "iconMapping", "onClose", "role", "severity", "slotProps", "slots", "variant"];
16699
- const useUtilityClasses$1N = ownerState => {
16698
+ const _excluded$23 = ["action", "children", "className", "closeText", "color", "components", "componentsProps", "icon", "iconMapping", "onClose", "role", "severity", "slotProps", "slots", "variant"];
16699
+ const useUtilityClasses$1L = ownerState => {
16700
16700
  const {
16701
16701
  variant,
16702
16702
  color,
@@ -16841,14 +16841,14 @@ const Alert = /*#__PURE__*/React__namespace.forwardRef(function Alert(inProps, r
16841
16841
  slots = {},
16842
16842
  variant = 'standard'
16843
16843
  } = props,
16844
- other = _objectWithoutPropertiesLoose(props, _excluded$25);
16844
+ other = _objectWithoutPropertiesLoose(props, _excluded$23);
16845
16845
  const ownerState = _extends$1({}, props, {
16846
16846
  color,
16847
16847
  severity,
16848
16848
  variant,
16849
16849
  colorSeverity: color || severity
16850
16850
  });
16851
- const classes = useUtilityClasses$1N(ownerState);
16851
+ const classes = useUtilityClasses$1L(ownerState);
16852
16852
  const externalForwardedProps = {
16853
16853
  slots: _extends$1({
16854
16854
  closeButton: components.CloseButton,
@@ -17026,8 +17026,8 @@ function getTypographyUtilityClass(slot) {
17026
17026
  }
17027
17027
  generateUtilityClasses$1('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);
17028
17028
 
17029
- const _excluded$24 = ["align", "className", "component", "gutterBottom", "noWrap", "paragraph", "variant", "variantMapping"];
17030
- const useUtilityClasses$1M = ownerState => {
17029
+ const _excluded$22 = ["align", "className", "component", "gutterBottom", "noWrap", "paragraph", "variant", "variantMapping"];
17030
+ const useUtilityClasses$1K = ownerState => {
17031
17031
  const {
17032
17032
  align,
17033
17033
  gutterBottom,
@@ -17113,7 +17113,7 @@ const Typography = /*#__PURE__*/React__namespace.forwardRef(function Typography(
17113
17113
  variant = 'body1',
17114
17114
  variantMapping = defaultVariantMapping
17115
17115
  } = props,
17116
- other = _objectWithoutPropertiesLoose(props, _excluded$24);
17116
+ other = _objectWithoutPropertiesLoose(props, _excluded$22);
17117
17117
  const ownerState = _extends$1({}, props, {
17118
17118
  align,
17119
17119
  color,
@@ -17126,7 +17126,7 @@ const Typography = /*#__PURE__*/React__namespace.forwardRef(function Typography(
17126
17126
  variantMapping
17127
17127
  });
17128
17128
  const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';
17129
- const classes = useUtilityClasses$1M(ownerState);
17129
+ const classes = useUtilityClasses$1K(ownerState);
17130
17130
  return /*#__PURE__*/require$$2$1.jsx(TypographyRoot, _extends$1({
17131
17131
  as: Component,
17132
17132
  ref: ref,
@@ -17216,8 +17216,8 @@ function getAlertTitleUtilityClass(slot) {
17216
17216
  }
17217
17217
  generateUtilityClasses$1('MuiAlertTitle', ['root']);
17218
17218
 
17219
- const _excluded$23 = ["className"];
17220
- const useUtilityClasses$1L = ownerState => {
17219
+ const _excluded$21 = ["className"];
17220
+ const useUtilityClasses$1J = ownerState => {
17221
17221
  const {
17222
17222
  classes
17223
17223
  } = ownerState;
@@ -17246,9 +17246,9 @@ const AlertTitle = /*#__PURE__*/React__namespace.forwardRef(function AlertTitle(
17246
17246
  const {
17247
17247
  className
17248
17248
  } = props,
17249
- other = _objectWithoutPropertiesLoose(props, _excluded$23);
17249
+ other = _objectWithoutPropertiesLoose(props, _excluded$21);
17250
17250
  const ownerState = props;
17251
- const classes = useUtilityClasses$1L(ownerState);
17251
+ const classes = useUtilityClasses$1J(ownerState);
17252
17252
  return /*#__PURE__*/require$$2$1.jsx(AlertTitleRoot, _extends$1({
17253
17253
  gutterBottom: true,
17254
17254
  component: "div",
@@ -17286,8 +17286,8 @@ function getAppBarUtilityClass(slot) {
17286
17286
  }
17287
17287
  generateUtilityClasses$1('MuiAppBar', ['root', 'positionFixed', 'positionAbsolute', 'positionSticky', 'positionStatic', 'positionRelative', 'colorDefault', 'colorPrimary', 'colorSecondary', 'colorInherit', 'colorTransparent', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning']);
17288
17288
 
17289
- const _excluded$22 = ["className", "color", "enableColorOnDark", "position"];
17290
- const useUtilityClasses$1K = ownerState => {
17289
+ const _excluded$20 = ["className", "color", "enableColorOnDark", "position"];
17290
+ const useUtilityClasses$1I = ownerState => {
17291
17291
  const {
17292
17292
  color,
17293
17293
  position,
@@ -17393,13 +17393,13 @@ const AppBar = /*#__PURE__*/React__namespace.forwardRef(function AppBar(inProps,
17393
17393
  enableColorOnDark = false,
17394
17394
  position = 'fixed'
17395
17395
  } = props,
17396
- other = _objectWithoutPropertiesLoose(props, _excluded$22);
17396
+ other = _objectWithoutPropertiesLoose(props, _excluded$20);
17397
17397
  const ownerState = _extends$1({}, props, {
17398
17398
  color,
17399
17399
  position,
17400
17400
  enableColorOnDark
17401
17401
  });
17402
- const classes = useUtilityClasses$1K(ownerState);
17402
+ const classes = useUtilityClasses$1I(ownerState);
17403
17403
  return /*#__PURE__*/require$$2$1.jsx(AppBarRoot, _extends$1({
17404
17404
  square: true,
17405
17405
  component: "header",
@@ -18446,8 +18446,8 @@ function getListSubheaderUtilityClass(slot) {
18446
18446
  }
18447
18447
  generateUtilityClasses$1('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);
18448
18448
 
18449
- const _excluded$21 = ["className", "color", "component", "disableGutters", "disableSticky", "inset"];
18450
- const useUtilityClasses$1J = ownerState => {
18449
+ const _excluded$1$ = ["className", "color", "component", "disableGutters", "disableSticky", "inset"];
18450
+ const useUtilityClasses$1H = ownerState => {
18451
18451
  const {
18452
18452
  classes,
18453
18453
  color,
@@ -18508,7 +18508,7 @@ const ListSubheader = /*#__PURE__*/React__namespace.forwardRef(function ListSubh
18508
18508
  disableSticky = false,
18509
18509
  inset = false
18510
18510
  } = props,
18511
- other = _objectWithoutPropertiesLoose(props, _excluded$21);
18511
+ other = _objectWithoutPropertiesLoose(props, _excluded$1$);
18512
18512
  const ownerState = _extends$1({}, props, {
18513
18513
  color,
18514
18514
  component,
@@ -18516,7 +18516,7 @@ const ListSubheader = /*#__PURE__*/React__namespace.forwardRef(function ListSubh
18516
18516
  disableSticky,
18517
18517
  inset
18518
18518
  });
18519
- const classes = useUtilityClasses$1J(ownerState);
18519
+ const classes = useUtilityClasses$1H(ownerState);
18520
18520
  return /*#__PURE__*/require$$2$1.jsx(ListSubheaderRoot, _extends$1({
18521
18521
  as: component,
18522
18522
  className: clsx(classes.root, className),
@@ -18584,8 +18584,8 @@ function getChipUtilityClass(slot) {
18584
18584
  const chipClasses = generateUtilityClasses$1('MuiChip', ['root', 'sizeSmall', 'sizeMedium', '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']);
18585
18585
  var chipClasses$1 = chipClasses;
18586
18586
 
18587
- const _excluded$20 = ["avatar", "className", "clickable", "color", "component", "deleteIcon", "disabled", "icon", "label", "onClick", "onDelete", "onKeyDown", "onKeyUp", "size", "variant", "tabIndex", "skipFocusWhenDisabled"];
18588
- const useUtilityClasses$1I = ownerState => {
18587
+ const _excluded$1_ = ["avatar", "className", "clickable", "color", "component", "deleteIcon", "disabled", "icon", "label", "onClick", "onDelete", "onKeyDown", "onKeyUp", "size", "variant", "tabIndex", "skipFocusWhenDisabled"];
18588
+ const useUtilityClasses$1G = ownerState => {
18589
18589
  const {
18590
18590
  classes,
18591
18591
  disabled,
@@ -18870,7 +18870,7 @@ const Chip = /*#__PURE__*/React__namespace.forwardRef(function Chip(inProps, ref
18870
18870
  tabIndex,
18871
18871
  skipFocusWhenDisabled = false // TODO v6: Rename to `focusableWhenDisabled`.
18872
18872
  } = props,
18873
- other = _objectWithoutPropertiesLoose(props, _excluded$20);
18873
+ other = _objectWithoutPropertiesLoose(props, _excluded$1_);
18874
18874
  const chipRef = React__namespace.useRef(null);
18875
18875
  const handleRef = useForkRef$1(chipRef, ref);
18876
18876
  const handleDeleteIconClick = event => {
@@ -18916,7 +18916,7 @@ const Chip = /*#__PURE__*/React__namespace.forwardRef(function Chip(inProps, ref
18916
18916
  clickable,
18917
18917
  variant
18918
18918
  });
18919
- const classes = useUtilityClasses$1I(ownerState);
18919
+ const classes = useUtilityClasses$1G(ownerState);
18920
18920
  const moreProps = component === ButtonBase$1 ? _extends$1({
18921
18921
  component: ComponentProp || 'div',
18922
18922
  focusVisibleClassName: classes.focusVisible
@@ -19072,7 +19072,7 @@ process.env.NODE_ENV !== "production" ? Chip.propTypes /* remove-proptypes */ =
19072
19072
  } : void 0;
19073
19073
  var Chip$1 = Chip;
19074
19074
 
19075
- const _excluded$1$ = ["onChange", "maxRows", "minRows", "style", "value"];
19075
+ const _excluded$1Z = ["onChange", "maxRows", "minRows", "style", "value"];
19076
19076
  function getStyleValue(value) {
19077
19077
  return parseInt(value, 10) || 0;
19078
19078
  }
@@ -19120,7 +19120,7 @@ const TextareaAutosize = /*#__PURE__*/React__namespace.forwardRef(function Texta
19120
19120
  style,
19121
19121
  value
19122
19122
  } = props,
19123
- other = _objectWithoutPropertiesLoose(props, _excluded$1$);
19123
+ other = _objectWithoutPropertiesLoose(props, _excluded$1Z);
19124
19124
  const {
19125
19125
  current: isControlled
19126
19126
  } = React__namespace.useRef(value != null);
@@ -19391,7 +19391,7 @@ function getInputBaseUtilityClass(slot) {
19391
19391
  const inputBaseClasses = generateUtilityClasses$1('MuiInputBase', ['root', 'formControl', 'focused', 'disabled', 'adornedStart', 'adornedEnd', 'error', 'sizeSmall', 'multiline', 'colorSecondary', 'fullWidth', 'hiddenLabel', 'readOnly', 'input', 'inputSizeSmall', 'inputMultiline', 'inputTypeSearch', 'inputAdornedStart', 'inputAdornedEnd', 'inputHiddenLabel']);
19392
19392
  var inputBaseClasses$1 = inputBaseClasses;
19393
19393
 
19394
- const _excluded$1_ = ["aria-describedby", "autoComplete", "autoFocus", "className", "color", "components", "componentsProps", "defaultValue", "disabled", "disableInjectingGlobalStyles", "endAdornment", "error", "fullWidth", "id", "inputComponent", "inputProps", "inputRef", "margin", "maxRows", "minRows", "multiline", "name", "onBlur", "onChange", "onClick", "onFocus", "onKeyDown", "onKeyUp", "placeholder", "readOnly", "renderSuffix", "rows", "size", "slotProps", "slots", "startAdornment", "type", "value"];
19394
+ const _excluded$1Y = ["aria-describedby", "autoComplete", "autoFocus", "className", "color", "components", "componentsProps", "defaultValue", "disabled", "disableInjectingGlobalStyles", "endAdornment", "error", "fullWidth", "id", "inputComponent", "inputProps", "inputRef", "margin", "maxRows", "minRows", "multiline", "name", "onBlur", "onChange", "onClick", "onFocus", "onKeyDown", "onKeyUp", "placeholder", "readOnly", "renderSuffix", "rows", "size", "slotProps", "slots", "startAdornment", "type", "value"];
19395
19395
  const rootOverridesResolver = (props, styles) => {
19396
19396
  const {
19397
19397
  ownerState
@@ -19404,7 +19404,7 @@ const inputOverridesResolver = (props, styles) => {
19404
19404
  } = props;
19405
19405
  return [styles.input, ownerState.size === 'small' && styles.inputSizeSmall, ownerState.multiline && styles.inputMultiline, ownerState.type === 'search' && styles.inputTypeSearch, ownerState.startAdornment && styles.inputAdornedStart, ownerState.endAdornment && styles.inputAdornedEnd, ownerState.hiddenLabel && styles.inputHiddenLabel];
19406
19406
  };
19407
- const useUtilityClasses$1H = ownerState => {
19407
+ const useUtilityClasses$1F = ownerState => {
19408
19408
  const {
19409
19409
  classes,
19410
19410
  color,
@@ -19620,7 +19620,7 @@ const InputBase = /*#__PURE__*/React__namespace.forwardRef(function InputBase(in
19620
19620
  type = 'text',
19621
19621
  value: valueProp
19622
19622
  } = props,
19623
- other = _objectWithoutPropertiesLoose(props, _excluded$1_);
19623
+ other = _objectWithoutPropertiesLoose(props, _excluded$1Y);
19624
19624
  const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;
19625
19625
  const {
19626
19626
  current: isControlled
@@ -19794,7 +19794,7 @@ const InputBase = /*#__PURE__*/React__namespace.forwardRef(function InputBase(in
19794
19794
  startAdornment,
19795
19795
  type
19796
19796
  });
19797
- const classes = useUtilityClasses$1H(ownerState);
19797
+ const classes = useUtilityClasses$1F(ownerState);
19798
19798
  const Root = slots.root || components.Root || InputBaseRoot;
19799
19799
  const rootProps = slotProps.root || componentsProps.root || {};
19800
19800
  const Input = slots.input || components.Input || InputBaseComponent;
@@ -20105,11 +20105,11 @@ const autocompleteClasses = generateUtilityClasses$1('MuiAutocomplete', ['root',
20105
20105
  var autocompleteClasses$1 = autocompleteClasses;
20106
20106
 
20107
20107
  var _ClearIcon, _ArrowDropDownIcon;
20108
- const _excluded$1Z = ["autoComplete", "autoHighlight", "autoSelect", "blurOnSelect", "ChipProps", "className", "clearIcon", "clearOnBlur", "clearOnEscape", "clearText", "closeText", "componentsProps", "defaultValue", "disableClearable", "disableCloseOnSelect", "disabled", "disabledItemsFocusable", "disableListWrap", "disablePortal", "filterOptions", "filterSelectedOptions", "forcePopupIcon", "freeSolo", "fullWidth", "getLimitTagsText", "getOptionDisabled", "getOptionKey", "getOptionLabel", "isOptionEqualToValue", "groupBy", "handleHomeEndKeys", "id", "includeInputInList", "inputValue", "limitTags", "ListboxComponent", "ListboxProps", "loading", "loadingText", "multiple", "noOptionsText", "onChange", "onClose", "onHighlightChange", "onInputChange", "onOpen", "open", "openOnFocus", "openText", "options", "PaperComponent", "PopperComponent", "popupIcon", "readOnly", "renderGroup", "renderInput", "renderOption", "renderTags", "selectOnFocus", "size", "slotProps", "value"],
20108
+ const _excluded$1X = ["autoComplete", "autoHighlight", "autoSelect", "blurOnSelect", "ChipProps", "className", "clearIcon", "clearOnBlur", "clearOnEscape", "clearText", "closeText", "componentsProps", "defaultValue", "disableClearable", "disableCloseOnSelect", "disabled", "disabledItemsFocusable", "disableListWrap", "disablePortal", "filterOptions", "filterSelectedOptions", "forcePopupIcon", "freeSolo", "fullWidth", "getLimitTagsText", "getOptionDisabled", "getOptionKey", "getOptionLabel", "isOptionEqualToValue", "groupBy", "handleHomeEndKeys", "id", "includeInputInList", "inputValue", "limitTags", "ListboxComponent", "ListboxProps", "loading", "loadingText", "multiple", "noOptionsText", "onChange", "onClose", "onHighlightChange", "onInputChange", "onOpen", "open", "openOnFocus", "openText", "options", "PaperComponent", "PopperComponent", "popupIcon", "readOnly", "renderGroup", "renderInput", "renderOption", "renderTags", "selectOnFocus", "size", "slotProps", "value"],
20109
20109
  _excluded2$e = ["ref"],
20110
20110
  _excluded3$3 = ["key"],
20111
20111
  _excluded4$1 = ["key"];
20112
- const useUtilityClasses$1G = ownerState => {
20112
+ const useUtilityClasses$1E = ownerState => {
20113
20113
  const {
20114
20114
  classes,
20115
20115
  disablePortal,
@@ -20540,7 +20540,7 @@ const Autocomplete = /*#__PURE__*/React__namespace.forwardRef(function Autocompl
20540
20540
  size = 'medium',
20541
20541
  slotProps = {}
20542
20542
  } = props,
20543
- other = _objectWithoutPropertiesLoose(props, _excluded$1Z);
20543
+ other = _objectWithoutPropertiesLoose(props, _excluded$1X);
20544
20544
  /* eslint-enable @typescript-eslint/no-unused-vars */
20545
20545
 
20546
20546
  const {
@@ -20599,7 +20599,7 @@ const Autocomplete = /*#__PURE__*/React__namespace.forwardRef(function Autocompl
20599
20599
  popupOpen,
20600
20600
  size
20601
20601
  });
20602
- const classes = useUtilityClasses$1G(ownerState);
20602
+ const classes = useUtilityClasses$1E(ownerState);
20603
20603
  let startAdornment;
20604
20604
  if (multiple && value.length > 0) {
20605
20605
  const getCustomizedTagProps = params => _extends$1({
@@ -21214,8 +21214,8 @@ function getAvatarUtilityClass(slot) {
21214
21214
  const avatarClasses = generateUtilityClasses$1('MuiAvatar', ['root', 'colorDefault', 'circular', 'rounded', 'square', 'img', 'fallback']);
21215
21215
  var avatarClasses$1 = avatarClasses;
21216
21216
 
21217
- const _excluded$1Y = ["alt", "children", "className", "component", "slots", "slotProps", "imgProps", "sizes", "src", "srcSet", "variant"];
21218
- const useUtilityClasses$1F = ownerState => {
21217
+ const _excluded$1W = ["alt", "children", "className", "component", "slots", "slotProps", "imgProps", "sizes", "src", "srcSet", "variant"];
21218
+ const useUtilityClasses$1D = ownerState => {
21219
21219
  const {
21220
21220
  classes,
21221
21221
  variant,
@@ -21361,7 +21361,7 @@ const Avatar = /*#__PURE__*/React__namespace.forwardRef(function Avatar(inProps,
21361
21361
  srcSet,
21362
21362
  variant = 'circular'
21363
21363
  } = props,
21364
- other = _objectWithoutPropertiesLoose(props, _excluded$1Y);
21364
+ other = _objectWithoutPropertiesLoose(props, _excluded$1W);
21365
21365
  let children = null;
21366
21366
 
21367
21367
  // Use a hook instead of onError on the img element to support server-side rendering.
@@ -21376,7 +21376,7 @@ const Avatar = /*#__PURE__*/React__namespace.forwardRef(function Avatar(inProps,
21376
21376
  component,
21377
21377
  variant
21378
21378
  });
21379
- const classes = useUtilityClasses$1F(ownerState);
21379
+ const classes = useUtilityClasses$1D(ownerState);
21380
21380
  const [ImgSlot, imgSlotProps] = useSlot('img', {
21381
21381
  className: classes.img,
21382
21382
  elementType: AvatarImg,
@@ -21496,12 +21496,12 @@ function getAvatarGroupUtilityClass(slot) {
21496
21496
  const avatarGroupClasses = generateUtilityClasses$1('MuiAvatarGroup', ['root', 'avatar']);
21497
21497
  var avatarGroupClasses$1 = avatarGroupClasses;
21498
21498
 
21499
- const _excluded$1X = ["children", "className", "component", "componentsProps", "max", "renderSurplus", "slotProps", "spacing", "total", "variant"];
21499
+ const _excluded$1V = ["children", "className", "component", "componentsProps", "max", "renderSurplus", "slotProps", "spacing", "total", "variant"];
21500
21500
  const SPACINGS$1 = {
21501
21501
  small: -16,
21502
21502
  medium: null
21503
21503
  };
21504
- const useUtilityClasses$1E = ownerState => {
21504
+ const useUtilityClasses$1C = ownerState => {
21505
21505
  const {
21506
21506
  classes
21507
21507
  } = ownerState;
@@ -21553,7 +21553,7 @@ const AvatarGroup = /*#__PURE__*/React__namespace.forwardRef(function AvatarGrou
21553
21553
  total,
21554
21554
  variant = 'circular'
21555
21555
  } = props,
21556
- other = _objectWithoutPropertiesLoose(props, _excluded$1X);
21556
+ other = _objectWithoutPropertiesLoose(props, _excluded$1V);
21557
21557
  let clampedMax = max < 2 ? 2 : max;
21558
21558
  const ownerState = _extends$1({}, props, {
21559
21559
  max,
@@ -21561,7 +21561,7 @@ const AvatarGroup = /*#__PURE__*/React__namespace.forwardRef(function AvatarGrou
21561
21561
  component,
21562
21562
  variant
21563
21563
  });
21564
- const classes = useUtilityClasses$1E(ownerState);
21564
+ const classes = useUtilityClasses$1C(ownerState);
21565
21565
  const children = React__namespace.Children.toArray(childrenProp).filter(child => {
21566
21566
  if (process.env.NODE_ENV !== 'production') {
21567
21567
  if (reactIsExports.isFragment(child)) {
@@ -21681,7 +21681,7 @@ process.env.NODE_ENV !== "production" ? AvatarGroup.propTypes /* remove-proptype
21681
21681
  } : void 0;
21682
21682
  var AvatarGroup$1 = AvatarGroup;
21683
21683
 
21684
- const _excluded$1W = ["addEndListener", "appear", "children", "easing", "in", "onEnter", "onEntered", "onEntering", "onExit", "onExited", "onExiting", "style", "timeout", "TransitionComponent"];
21684
+ const _excluded$1U = ["addEndListener", "appear", "children", "easing", "in", "onEnter", "onEntered", "onEntering", "onExit", "onExited", "onExiting", "style", "timeout", "TransitionComponent"];
21685
21685
  const styles$3 = {
21686
21686
  entering: {
21687
21687
  opacity: 1
@@ -21718,7 +21718,7 @@ const Fade = /*#__PURE__*/React__namespace.forwardRef(function Fade(props, ref)
21718
21718
  // eslint-disable-next-line react/prop-types
21719
21719
  TransitionComponent = Transition$1
21720
21720
  } = props,
21721
- other = _objectWithoutPropertiesLoose(props, _excluded$1W);
21721
+ other = _objectWithoutPropertiesLoose(props, _excluded$1U);
21722
21722
  const nodeRef = React__namespace.useRef(null);
21723
21723
  const handleRef = useForkRef$1(nodeRef, getReactElementRef(children), ref);
21724
21724
  const normalizedTransitionCallback = callback => maybeIsAppearing => {
@@ -21879,8 +21879,8 @@ function getBackdropUtilityClass(slot) {
21879
21879
  }
21880
21880
  generateUtilityClasses$1('MuiBackdrop', ['root', 'invisible']);
21881
21881
 
21882
- const _excluded$1V = ["children", "className", "component", "components", "componentsProps", "invisible", "open", "slotProps", "slots", "TransitionComponent", "transitionDuration"];
21883
- const useUtilityClasses$1D = ownerState => {
21882
+ const _excluded$1T = ["children", "className", "component", "components", "componentsProps", "invisible", "open", "slotProps", "slots", "TransitionComponent", "transitionDuration"];
21883
+ const useUtilityClasses$1B = ownerState => {
21884
21884
  const {
21885
21885
  classes,
21886
21886
  invisible
@@ -21934,12 +21934,12 @@ const Backdrop = /*#__PURE__*/React__namespace.forwardRef(function Backdrop(inPr
21934
21934
  TransitionComponent = Fade$1,
21935
21935
  transitionDuration
21936
21936
  } = props,
21937
- other = _objectWithoutPropertiesLoose(props, _excluded$1V);
21937
+ other = _objectWithoutPropertiesLoose(props, _excluded$1T);
21938
21938
  const ownerState = _extends$1({}, props, {
21939
21939
  component,
21940
21940
  invisible
21941
21941
  });
21942
- const classes = useUtilityClasses$1D(ownerState);
21942
+ const classes = useUtilityClasses$1B(ownerState);
21943
21943
  const rootSlotProps = (_slotProps$root = slotProps.root) != null ? _slotProps$root : componentsProps.root;
21944
21944
  return /*#__PURE__*/require$$2$1.jsx(TransitionComponent, _extends$1({
21945
21945
  in: open,
@@ -22101,10 +22101,10 @@ const badgeClasses = generateUtilityClasses$1('MuiBadge', ['root', 'badge', 'dot
22101
22101
  'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);
22102
22102
  var badgeClasses$1 = badgeClasses;
22103
22103
 
22104
- const _excluded$1U = ["anchorOrigin", "className", "classes", "component", "components", "componentsProps", "children", "overlap", "color", "invisible", "max", "badgeContent", "slots", "slotProps", "showZero", "variant"];
22104
+ const _excluded$1S = ["anchorOrigin", "className", "classes", "component", "components", "componentsProps", "children", "overlap", "color", "invisible", "max", "badgeContent", "slots", "slotProps", "showZero", "variant"];
22105
22105
  const RADIUS_STANDARD = 10;
22106
22106
  const RADIUS_DOT = 4;
22107
- const useUtilityClasses$1C = ownerState => {
22107
+ const useUtilityClasses$1A = ownerState => {
22108
22108
  const {
22109
22109
  color,
22110
22110
  anchorOrigin,
@@ -22330,7 +22330,7 @@ const Badge = /*#__PURE__*/React__namespace.forwardRef(function Badge(inProps, r
22330
22330
  showZero = false,
22331
22331
  variant: variantProp = 'standard'
22332
22332
  } = props,
22333
- other = _objectWithoutPropertiesLoose(props, _excluded$1U);
22333
+ other = _objectWithoutPropertiesLoose(props, _excluded$1S);
22334
22334
  const {
22335
22335
  badgeContent,
22336
22336
  invisible: invisibleFromHook,
@@ -22368,7 +22368,7 @@ const Badge = /*#__PURE__*/React__namespace.forwardRef(function Badge(inProps, r
22368
22368
  overlap,
22369
22369
  variant
22370
22370
  });
22371
- const classes = useUtilityClasses$1C(ownerState);
22371
+ const classes = useUtilityClasses$1A(ownerState);
22372
22372
 
22373
22373
  // support both `slots` and `components` for backward compatibility
22374
22374
  const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : BadgeRoot;
@@ -22516,288 +22516,6 @@ process.env.NODE_ENV !== "production" ? Badge.propTypes /* remove-proptypes */ =
22516
22516
  } : void 0;
22517
22517
  var Badge$1 = Badge;
22518
22518
 
22519
- function getBottomNavigationUtilityClass(slot) {
22520
- return generateUtilityClass$1('MuiBottomNavigation', slot);
22521
- }
22522
- generateUtilityClasses$1('MuiBottomNavigation', ['root']);
22523
-
22524
- const _excluded$1T = ["children", "className", "component", "onChange", "showLabels", "value"];
22525
- const useUtilityClasses$1B = ownerState => {
22526
- const {
22527
- classes
22528
- } = ownerState;
22529
- const slots = {
22530
- root: ['root']
22531
- };
22532
- return composeClasses$1(slots, getBottomNavigationUtilityClass, classes);
22533
- };
22534
- const BottomNavigationRoot = styled$1('div', {
22535
- name: 'MuiBottomNavigation',
22536
- slot: 'Root',
22537
- overridesResolver: (props, styles) => styles.root
22538
- })(({
22539
- theme
22540
- }) => ({
22541
- display: 'flex',
22542
- justifyContent: 'center',
22543
- height: 56,
22544
- backgroundColor: (theme.vars || theme).palette.background.paper
22545
- }));
22546
- const BottomNavigation = /*#__PURE__*/React__namespace.forwardRef(function BottomNavigation(inProps, ref) {
22547
- const props = useDefaultProps({
22548
- props: inProps,
22549
- name: 'MuiBottomNavigation'
22550
- });
22551
- const {
22552
- children,
22553
- className,
22554
- component = 'div',
22555
- onChange,
22556
- showLabels = false,
22557
- value
22558
- } = props,
22559
- other = _objectWithoutPropertiesLoose(props, _excluded$1T);
22560
- const ownerState = _extends$1({}, props, {
22561
- component,
22562
- showLabels
22563
- });
22564
- const classes = useUtilityClasses$1B(ownerState);
22565
- return /*#__PURE__*/require$$2$1.jsx(BottomNavigationRoot, _extends$1({
22566
- as: component,
22567
- className: clsx(classes.root, className),
22568
- ref: ref,
22569
- ownerState: ownerState
22570
- }, other, {
22571
- children: React__namespace.Children.map(children, (child, childIndex) => {
22572
- if (! /*#__PURE__*/React__namespace.isValidElement(child)) {
22573
- return null;
22574
- }
22575
- if (process.env.NODE_ENV !== 'production') {
22576
- if (reactIsExports.isFragment(child)) {
22577
- console.error(["MUI: The BottomNavigation component doesn't accept a Fragment as a child.", 'Consider providing an array instead.'].join('\n'));
22578
- }
22579
- }
22580
- const childValue = child.props.value === undefined ? childIndex : child.props.value;
22581
- return /*#__PURE__*/React__namespace.cloneElement(child, {
22582
- selected: childValue === value,
22583
- showLabel: child.props.showLabel !== undefined ? child.props.showLabel : showLabels,
22584
- value: childValue,
22585
- onChange
22586
- });
22587
- })
22588
- }));
22589
- });
22590
- process.env.NODE_ENV !== "production" ? BottomNavigation.propTypes /* remove-proptypes */ = {
22591
- // ┌────────────────────────────── Warning ──────────────────────────────┐
22592
- // │ These PropTypes are generated from the TypeScript type definitions. │
22593
- // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
22594
- // └─────────────────────────────────────────────────────────────────────┘
22595
- /**
22596
- * The content of the component.
22597
- */
22598
- children: PropTypes.node,
22599
- /**
22600
- * Override or extend the styles applied to the component.
22601
- */
22602
- classes: PropTypes.object,
22603
- /**
22604
- * @ignore
22605
- */
22606
- className: PropTypes.string,
22607
- /**
22608
- * The component used for the root node.
22609
- * Either a string to use a HTML element or a component.
22610
- */
22611
- component: PropTypes.elementType,
22612
- /**
22613
- * Callback fired when the value changes.
22614
- *
22615
- * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.
22616
- * @param {any} value We default to the index of the child.
22617
- */
22618
- onChange: PropTypes.func,
22619
- /**
22620
- * If `true`, all `BottomNavigationAction`s will show their labels.
22621
- * By default, only the selected `BottomNavigationAction` will show its label.
22622
- * @default false
22623
- */
22624
- showLabels: PropTypes.bool,
22625
- /**
22626
- * The system prop that allows defining system overrides as well as additional CSS styles.
22627
- */
22628
- sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
22629
- /**
22630
- * The value of the currently selected `BottomNavigationAction`.
22631
- */
22632
- value: PropTypes.any
22633
- } : void 0;
22634
- var BottomNavigation$1 = BottomNavigation;
22635
-
22636
- function getBottomNavigationActionUtilityClass(slot) {
22637
- return generateUtilityClass$1('MuiBottomNavigationAction', slot);
22638
- }
22639
- const bottomNavigationActionClasses = generateUtilityClasses$1('MuiBottomNavigationAction', ['root', 'iconOnly', 'selected', 'label']);
22640
- var bottomNavigationActionClasses$1 = bottomNavigationActionClasses;
22641
-
22642
- const _excluded$1S = ["className", "icon", "label", "onChange", "onClick", "selected", "showLabel", "value"];
22643
- const useUtilityClasses$1A = ownerState => {
22644
- const {
22645
- classes,
22646
- showLabel,
22647
- selected
22648
- } = ownerState;
22649
- const slots = {
22650
- root: ['root', !showLabel && !selected && 'iconOnly', selected && 'selected'],
22651
- label: ['label', !showLabel && !selected && 'iconOnly', selected && 'selected']
22652
- };
22653
- return composeClasses$1(slots, getBottomNavigationActionUtilityClass, classes);
22654
- };
22655
- const BottomNavigationActionRoot = styled$1(ButtonBase$1, {
22656
- name: 'MuiBottomNavigationAction',
22657
- slot: 'Root',
22658
- overridesResolver: (props, styles) => {
22659
- const {
22660
- ownerState
22661
- } = props;
22662
- return [styles.root, !ownerState.showLabel && !ownerState.selected && styles.iconOnly];
22663
- }
22664
- })(({
22665
- theme,
22666
- ownerState
22667
- }) => _extends$1({
22668
- transition: theme.transitions.create(['color', 'padding-top'], {
22669
- duration: theme.transitions.duration.short
22670
- }),
22671
- padding: '0px 12px',
22672
- minWidth: 80,
22673
- maxWidth: 168,
22674
- color: (theme.vars || theme).palette.text.secondary,
22675
- flexDirection: 'column',
22676
- flex: '1'
22677
- }, !ownerState.showLabel && !ownerState.selected && {
22678
- paddingTop: 14
22679
- }, !ownerState.showLabel && !ownerState.selected && !ownerState.label && {
22680
- paddingTop: 0
22681
- }, {
22682
- [`&.${bottomNavigationActionClasses$1.selected}`]: {
22683
- color: (theme.vars || theme).palette.primary.main
22684
- }
22685
- }));
22686
- const BottomNavigationActionLabel = styled$1('span', {
22687
- name: 'MuiBottomNavigationAction',
22688
- slot: 'Label',
22689
- overridesResolver: (props, styles) => styles.label
22690
- })(({
22691
- theme,
22692
- ownerState
22693
- }) => _extends$1({
22694
- fontFamily: theme.typography.fontFamily,
22695
- fontSize: theme.typography.pxToRem(12),
22696
- opacity: 1,
22697
- transition: 'font-size 0.2s, opacity 0.2s',
22698
- transitionDelay: '0.1s'
22699
- }, !ownerState.showLabel && !ownerState.selected && {
22700
- opacity: 0,
22701
- transitionDelay: '0s'
22702
- }, {
22703
- [`&.${bottomNavigationActionClasses$1.selected}`]: {
22704
- fontSize: theme.typography.pxToRem(14)
22705
- }
22706
- }));
22707
- const BottomNavigationAction = /*#__PURE__*/React__namespace.forwardRef(function BottomNavigationAction(inProps, ref) {
22708
- const props = useDefaultProps({
22709
- props: inProps,
22710
- name: 'MuiBottomNavigationAction'
22711
- });
22712
- const {
22713
- className,
22714
- icon,
22715
- label,
22716
- onChange,
22717
- onClick
22718
- // eslint-disable-next-line react/prop-types -- private, always overridden by BottomNavigation
22719
- ,
22720
-
22721
- value
22722
- } = props,
22723
- other = _objectWithoutPropertiesLoose(props, _excluded$1S);
22724
- const ownerState = props;
22725
- const classes = useUtilityClasses$1A(ownerState);
22726
- const handleChange = event => {
22727
- if (onChange) {
22728
- onChange(event, value);
22729
- }
22730
- if (onClick) {
22731
- onClick(event);
22732
- }
22733
- };
22734
- return /*#__PURE__*/require$$2$1.jsxs(BottomNavigationActionRoot, _extends$1({
22735
- ref: ref,
22736
- className: clsx(classes.root, className),
22737
- focusRipple: true,
22738
- onClick: handleChange,
22739
- ownerState: ownerState
22740
- }, other, {
22741
- children: [icon, /*#__PURE__*/require$$2$1.jsx(BottomNavigationActionLabel, {
22742
- className: classes.label,
22743
- ownerState: ownerState,
22744
- children: label
22745
- })]
22746
- }));
22747
- });
22748
- process.env.NODE_ENV !== "production" ? BottomNavigationAction.propTypes /* remove-proptypes */ = {
22749
- // ┌────────────────────────────── Warning ──────────────────────────────┐
22750
- // │ These PropTypes are generated from the TypeScript type definitions. │
22751
- // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
22752
- // └─────────────────────────────────────────────────────────────────────┘
22753
- /**
22754
- * This prop isn't supported.
22755
- * Use the `component` prop if you need to change the children structure.
22756
- */
22757
- children: unsupportedProp,
22758
- /**
22759
- * Override or extend the styles applied to the component.
22760
- */
22761
- classes: PropTypes.object,
22762
- /**
22763
- * @ignore
22764
- */
22765
- className: PropTypes.string,
22766
- /**
22767
- * The icon to display.
22768
- */
22769
- icon: PropTypes.node,
22770
- /**
22771
- * The label element.
22772
- */
22773
- label: PropTypes.node,
22774
- /**
22775
- * @ignore
22776
- */
22777
- onChange: PropTypes.func,
22778
- /**
22779
- * @ignore
22780
- */
22781
- onClick: PropTypes.func,
22782
- /**
22783
- * If `true`, the `BottomNavigationAction` will show its label.
22784
- * By default, only the selected `BottomNavigationAction`
22785
- * inside `BottomNavigation` will show its label.
22786
- *
22787
- * The prop defaults to the value (`false`) inherited from the parent BottomNavigation component.
22788
- */
22789
- showLabel: PropTypes.bool,
22790
- /**
22791
- * The system prop that allows defining system overrides as well as additional CSS styles.
22792
- */
22793
- sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
22794
- /**
22795
- * You can provide your own value. Otherwise, we fallback to the child position index.
22796
- */
22797
- value: PropTypes.any
22798
- } : void 0;
22799
- var BottomNavigationAction$1 = BottomNavigationAction;
22800
-
22801
22519
  const boxClasses = generateUtilityClasses$1('MuiBox', ['root']);
22802
22520
  var boxClasses$1 = boxClasses;
22803
22521
 
@@ -123880,6 +123598,427 @@ const PermissionSelector = (props) => {
123880
123598
  }))));
123881
123599
  };
123882
123600
 
123601
+ /**
123602
+ * Shared TopBar stack heights and content-offset helpers.
123603
+ *
123604
+ * Use these to clear a fixed TopBar from page content, accounting for
123605
+ * expanded/collapsed chrome and whether Acesso Rápido (QuickActions) is shown.
123606
+ *
123607
+ * @remarks
123608
+ * For fixed-chrome pages (e.g. HomePage), prefer **measured** clearance via
123609
+ * `MeasuredLayoutProvider` + `useContentClearance` so padding tracks live
123610
+ * TopBar/BottomNav height (Acesso Rápido hide/show, grid vs horizontal, scroll
123611
+ * collapse). Keep these helpers as **fallback** before the first ResizeObserver
123612
+ * paint and for non-measured callers.
123613
+ */
123614
+ /**
123615
+ * Canonical TopBar-related heights (px) used for layout clearance.
123616
+ *
123617
+ * @remarks
123618
+ * - `collapsed` — TopBar chrome when the greeting section is collapsed
123619
+ * - `expanded` — legacy aggregate expanded height (prefer {@link getTopBarExpandedHeight})
123620
+ * - `quickActionsCompact` — compact Acesso Rápido strip while collapsed
123621
+ * - `primaryOnly` — greeting/avatar row when QuickActions are hidden
123622
+ * (avatar 40px + CARD_PADDING vertical: xs 32 / sm+ 48, stepped for md)
123623
+ */
123624
+ const TOP_BAR_HEIGHTS = {
123625
+ collapsed: { xs: 56, sm: 64, md: 72 },
123626
+ expanded: { xs: 180, sm: 200, md: 220 },
123627
+ quickActionsCompact: { xs: 60, sm: 64 },
123628
+ primaryOnly: { xs: 72, sm: 88, md: 104 },
123629
+ };
123630
+ const addOffset = (heights, additionalOffset) => ({
123631
+ xs: heights.xs + additionalOffset,
123632
+ sm: heights.sm + additionalOffset,
123633
+ md: heights.md + additionalOffset,
123634
+ });
123635
+ /**
123636
+ * Expanded TopBar height including full QuickActions, by layout.
123637
+ *
123638
+ * @param layout - QuickActionsBar layout (`grid` needs more xs height than `horizontal`)
123639
+ */
123640
+ const getTopBarExpandedHeight = (layout = "horizontal") => ({
123641
+ xs: layout === "grid" ? 170 : 120,
123642
+ sm: TOP_BAR_HEIGHTS.expanded.sm,
123643
+ md: TOP_BAR_HEIGHTS.expanded.md,
123644
+ });
123645
+ /**
123646
+ * TopBar height for simple expanded/collapsed toggles (ignores QuickActions layout).
123647
+ *
123648
+ * @param isExpanded - Whether the TopBar is expanded
123649
+ */
123650
+ const getTopBarHeight = (isExpanded) => isExpanded ? TOP_BAR_HEIGHTS.expanded : TOP_BAR_HEIGHTS.collapsed;
123651
+ /**
123652
+ * Fixed TopBar stack height that page content must clear.
123653
+ *
123654
+ * - QuickActions hidden → primary greeting only
123655
+ * - Expanded + QuickActions → layout-aware expanded height
123656
+ * - Collapsed + QuickActions → collapsed chrome + compact QuickActions
123657
+ */
123658
+ const getTopBarStackHeight = ({ isExpanded, showQuickActions = true, layout = "horizontal", }) => {
123659
+ if (!showQuickActions) {
123660
+ return Object.assign({}, TOP_BAR_HEIGHTS.primaryOnly);
123661
+ }
123662
+ if (isExpanded) {
123663
+ return getTopBarExpandedHeight(layout);
123664
+ }
123665
+ const base = TOP_BAR_HEIGHTS.collapsed;
123666
+ const compact = TOP_BAR_HEIGHTS.quickActionsCompact;
123667
+ return {
123668
+ xs: base.xs + compact.xs,
123669
+ sm: base.sm + compact.sm,
123670
+ md: base.md + compact.sm,
123671
+ };
123672
+ };
123673
+ /**
123674
+ * `padding-top` for page content under a fixed TopBar.
123675
+ *
123676
+ * @example
123677
+ * ```ts
123678
+ * getContentPaddingTop({
123679
+ * isExpanded: true,
123680
+ * showQuickActions: false,
123681
+ * additionalOffset: 8,
123682
+ * })
123683
+ * ```
123684
+ */
123685
+ const getContentPaddingTop = ({ isExpanded, showQuickActions = true, layout = "horizontal", additionalOffset = 0, }) => addOffset(getTopBarStackHeight({ isExpanded, showQuickActions, layout }), additionalOffset);
123686
+ /**
123687
+ * Companion `margin-top` for content under a fixed TopBar.
123688
+ *
123689
+ * Uses full padding when expanded or when QuickActions are hidden
123690
+ * (TopBar does not collapse without QuickActions). Halves when collapsed
123691
+ * with QuickActions visible for a tighter scroll layout.
123692
+ */
123693
+ const getContentMarginTop = ({ isExpanded, showQuickActions = true, layout = "horizontal", additionalOffset = 0, }) => {
123694
+ const padding = getContentPaddingTop({
123695
+ isExpanded,
123696
+ showQuickActions,
123697
+ layout,
123698
+ additionalOffset,
123699
+ });
123700
+ const useFullMargin = !showQuickActions || isExpanded;
123701
+ return {
123702
+ xs: useFullMargin ? padding.xs : padding.xs / 2,
123703
+ sm: useFullMargin ? padding.sm : padding.sm / 2,
123704
+ md: useFullMargin ? padding.md : padding.md / 2,
123705
+ };
123706
+ };
123707
+
123708
+ /**
123709
+ * HomePage Design System Constants
123710
+ *
123711
+ * This file defines the design tokens for consistent spacing, animations,
123712
+ * and component dimensions across the HomePage and its child components.
123713
+ *
123714
+ * Following Material Design principles and mobile-first responsive design.
123715
+ *
123716
+ * TopBar content-offset helpers live in `theme/topBarLayout` and are
123717
+ * re-exported here for HomePage callers. Prefer measured clearance
123718
+ * (`MeasuredLayoutProvider` + `useContentClearance`) for fixed chrome pages;
123719
+ * these constants remain useful as fallbacks and for non-measured callers.
123720
+ */
123721
+ /** Max unread notifications shown in the home bell quick panel. */
123722
+ const HOME_BELL_NOTIFICATION_LIMIT = 3;
123723
+ /**
123724
+ * Animation Durations (in milliseconds)
123725
+ * Based on Material Design motion guidelines
123726
+ */
123727
+ const ANIMATION_DURATION = {
123728
+ fast: 150, // Quick feedback interactions
123729
+ normal: 300, // Standard transitions
123730
+ slow: 500, // Emphasis animations
123731
+ enter: 225, // Material entrance timing
123732
+ exit: 195, // Material exit timing
123733
+ };
123734
+ /**
123735
+ * Animation Easing Functions
123736
+ * Material Design standard easing curves
123737
+ */
123738
+ const ANIMATION_EASING = {
123739
+ standard: "cubic-bezier(0.4, 0, 0.2, 1)", // Standard curve
123740
+ decelerate: "cubic-bezier(0.0, 0, 0.2, 1)", // Deceleration curve
123741
+ accelerate: "cubic-bezier(0.4, 0, 1, 1)", // Acceleration curve
123742
+ sharp: "cubic-bezier(0.4, 0, 0.6, 1)", // Sharp curve
123743
+ spring: "cubic-bezier(0.34, 1.56, 0.64, 1)", // Spring-like bounce
123744
+ };
123745
+ /**
123746
+ * Component Heights
123747
+ * Responsive heights for major UI components
123748
+ */
123749
+ /**
123750
+ * Defines standard heights for various UI components on the HomePage, supporting responsive design.
123751
+ *
123752
+ * @remarks
123753
+ * The `COMPONENT_HEIGHTS` object provides pixel or viewport-based height values for different components,
123754
+ * with breakpoints for extra-small (`xs`), small (`sm`), and medium (`md`) screens where applicable.
123755
+ * This ensures consistent layout and spacing across devices.
123756
+ *
123757
+ * @property topBar - Heights (in pixels) for the TopBar component in its collapsed state.
123758
+ * - Example: On a small screen (`sm`), the TopBar height is 64px.
123759
+ * @property topBarExpanded - Heights (in pixels) for the TopBar when expanded (e.g., showing QuickActions).
123760
+ * - Example: On a medium screen (`md`), the expanded TopBar height is 220px.
123761
+ * @property quickActionsCompact - Heights (in pixels) for the QuickActionsBar in compact mode.
123762
+ * - Example: On an extra-small screen (`xs`), the QuickActionsBar height is 60px.
123763
+ * @property bottomNav - Content clearance for the floating Home bottom nav pill
123764
+ * (notch protrusion 24 + inner height 56 + float margin 16). Keep in sync with
123765
+ * `HOME_BOTTOM_NAV_CLEARANCE` in `HomeBottomNav.tsx`.
123766
+ * @property featuredCard - Minimum heights (in pixels) for the featured event card.
123767
+ * - Example: On a small screen (`sm`), the featured card has a minimum height of 220px.
123768
+ */
123769
+ const COMPONENT_HEIGHTS = {
123770
+ // TopBar heights in collapsed state
123771
+ topBar: TOP_BAR_HEIGHTS.collapsed,
123772
+ // TopBar heights in expanded state (with QuickActions)
123773
+ topBarExpanded: TOP_BAR_HEIGHTS.expanded, // xs: 120 when on horizontal and 170 when on grid
123774
+ // QuickActionsBar height in compact mode
123775
+ quickActionsCompact: TOP_BAR_HEIGHTS.quickActionsCompact,
123776
+ // Primary greeting only (QuickActions hidden)
123777
+ topBarPrimary: TOP_BAR_HEIGHTS.primaryOnly,
123778
+ // Floating pill clearance (24 + 56 + 16); matches HOME_BOTTOM_NAV_CLEARANCE
123779
+ bottomNav: 96,
123780
+ // Featured event card minimum height (fixed pixels for uniform cards)
123781
+ featuredCard: { xs: 200, sm: 220, md: 240 },
123782
+ };
123783
+ /**
123784
+ * Scroll Behavior Constants
123785
+ */
123786
+ const SCROLL_CONFIG = {
123787
+ // Threshold in pixels before collapsing TopBar
123788
+ collapseThreshold: 100,
123789
+ // Threshold in pixels before showing scroll-to-top button
123790
+ scrollToTopThreshold: 300,
123791
+ // Debounce delay for scroll events (ms)
123792
+ scrollDebounce: 16, // ~60fps
123793
+ };
123794
+ /**
123795
+ * Touch Interaction Constants
123796
+ */
123797
+ const TOUCH_CONFIG = {
123798
+ // Minimum touch target size (accessibility)
123799
+ minTouchTarget: 48,
123800
+ // Long press duration (ms)
123801
+ longPressDuration: 400,
123802
+ // Swipe threshold distance (px)
123803
+ swipeThreshold: 50,
123804
+ // Swipe velocity threshold (px/ms)
123805
+ swipeVelocity: 0.3,
123806
+ };
123807
+ /**
123808
+ * HomePage Section Configurations
123809
+ *
123810
+ * Defines the structure and metadata for each major section of the HomePage.
123811
+ * Used with SectionHeader component to provide consistent section labeling.
123812
+ */
123813
+ const HOME_SECTIONS = {
123814
+ WELCOME: {
123815
+ id: "welcome",
123816
+ title: "Bem-vindo",
123817
+ icon: "Waving Hand",
123818
+ showDivider: false,
123819
+ },
123820
+ WEEKLY_TASKS: {
123821
+ id: "weekly-tasks",
123822
+ title: "Tarefas da semana",
123823
+ subtitle: "Pequenas ações para usar o que a casa já tem no sistema",
123824
+ icon: "TaskAlt",
123825
+ showDivider: false,
123826
+ },
123827
+ PROFILE_COMPLETENESS: {
123828
+ id: "profile-completeness",
123829
+ title: "Completude do perfil",
123830
+ subtitle: "Acompanhe o que ainda falta para deixar seu perfil completo",
123831
+ icon: "Person",
123832
+ showDivider: false,
123833
+ },
123834
+ TERREIRO_COMPLETENESS: {
123835
+ id: "terreiro-completeness",
123836
+ title: "Perfil do Terreiro",
123837
+ subtitle: "Acompanhe o que ainda falta no perfil da casa (avatar, contato e endereço)",
123838
+ icon: "Home",
123839
+ showDivider: false,
123840
+ },
123841
+ PROGRESS: {
123842
+ id: "progress",
123843
+ title: "Seu Progresso",
123844
+ subtitle: "Acompanhe seu desenvolvimento e conquistas",
123845
+ icon: "TrendingUp",
123846
+ actionLabel: "Ver Tudo",
123847
+ showDivider: false,
123848
+ },
123849
+ ATTENDANCE: {
123850
+ id: "attendance",
123851
+ title: "Presença do Período",
123852
+ subtitle: "Confirmação e presença real dos médiuns",
123853
+ icon: "TrendingUp",
123854
+ actionLabel: "Ver médiuns",
123855
+ showDivider: false,
123856
+ },
123857
+ SUPPLY_PLAN: {
123858
+ id: "supply-plan",
123859
+ title: "Planejamento de Insumos",
123860
+ subtitle: "Resumo do que comprar e missões de insumos da casa",
123861
+ icon: "Inventory2",
123862
+ showDivider: false,
123863
+ },
123864
+ CALENDAR: {
123865
+ id: "calendar",
123866
+ title: "Próximas Atividades",
123867
+ subtitle: "Seus eventos e compromissos",
123868
+ icon: "CalendarMonth",
123869
+ actionLabel: "Ver Calendário",
123870
+ showDivider: false,
123871
+ },
123872
+ SPIRITUALITY: {
123873
+ id: "spirituality",
123874
+ title: "Espiritualidade",
123875
+ subtitle: "Fase lunar e rituais recomendados",
123876
+ icon: "AutoAwesome",
123877
+ showDivider: false,
123878
+ },
123879
+ HIGHLIGHTS: {
123880
+ id: "highlights",
123881
+ title: "Em Destaque",
123882
+ subtitle: "Próximos eventos do terreiro",
123883
+ icon: "Star",
123884
+ showDivider: false,
123885
+ },
123886
+ };
123887
+
123888
+ /** Pill body height. */
123889
+ const NOTCHED_BAR_HEIGHT = 56;
123890
+ /** Page-colored circle diameter. */
123891
+ const NOTCHED_CIRCLE = 48;
123892
+ /** How far the circle rises above the pill. */
123893
+ const NOTCHED_BAR_PROTRUSION = 24;
123894
+ /** Icon travel so its center meets the circle center (pill midline → bar top). */
123895
+ const NOTCHED_ICON_LIFT = NOTCHED_BAR_HEIGHT / 2;
123896
+ const NOTCH_TRANSITION = `transform ${ANIMATION_DURATION.slow}ms ${ANIMATION_EASING.spring}`;
123897
+ const NotchedSlotContext = React$1.createContext({ active: false });
123898
+ /** True while this slot is the one sitting in the traveling cutout. */
123899
+ const useNotchedSlotActive = () => React$1.useContext(NotchedSlotContext).active;
123900
+ const NotchedBottomBarItem = React$1.forwardRef(function NotchedBottomBarItem(_a, ref) {
123901
+ var { label, active = false, children, type = "button" } = _a, rest = __rest(_a, ["label", "active", "children", "type"]);
123902
+ const reduceMotion = useMediaQuery("(prefers-reduced-motion: reduce)");
123903
+ return (React$1.createElement(NotchedSlotContext.Provider, { value: { active } },
123904
+ React$1.createElement(Box$1, Object.assign({ component: "button", ref: ref, type: type, "aria-label": label, "aria-current": active ? "page" : undefined }, rest, { sx: {
123905
+ flex: "1 1 0",
123906
+ minWidth: 0,
123907
+ minHeight: 44,
123908
+ height: "100%",
123909
+ m: 0,
123910
+ p: 0,
123911
+ border: 0,
123912
+ bgcolor: "transparent",
123913
+ color: active ? "text.primary" : (theme) => { var _a, _b; return (_b = (_a = theme.brand) === null || _a === void 0 ? void 0 : _a.cream) !== null && _b !== void 0 ? _b : "#F3E2B3"; },
123914
+ display: "flex",
123915
+ alignItems: "center",
123916
+ justifyContent: "center",
123917
+ position: "relative",
123918
+ zIndex: 2,
123919
+ cursor: "pointer",
123920
+ WebkitTapHighlightColor: "transparent",
123921
+ "&:focus-visible": {
123922
+ outline: (theme) => `2px solid ${theme.palette.primary.main}`,
123923
+ outlineOffset: -4,
123924
+ borderRadius: 1,
123925
+ },
123926
+ } }),
123927
+ React$1.createElement(Box$1, { sx: {
123928
+ display: "flex",
123929
+ alignItems: "center",
123930
+ justifyContent: "center",
123931
+ transform: active
123932
+ ? `translateY(-${NOTCHED_ICON_LIFT}px)`
123933
+ : "translateY(0)",
123934
+ transition: reduceMotion ? "none" : NOTCH_TRANSITION,
123935
+ "& .MuiSvgIcon-root": { fontSize: 22 },
123936
+ } }, children))));
123937
+ });
123938
+ const clampIndex = (index, count) => {
123939
+ if (count <= 0)
123940
+ return 0;
123941
+ return Math.min(Math.max(index, 0), count - 1);
123942
+ };
123943
+ /**
123944
+ * Coal pill with one page-colored cutout. The cutout slides to the active slot
123945
+ * and that slot's icon lifts into the circle.
123946
+ */
123947
+ const NotchedBottomBar = ({ activeIndex, "aria-label": ariaLabel, children, }) => {
123948
+ const reduceMotion = useMediaQuery("(prefers-reduced-motion: reduce)");
123949
+ const items = React$1.useMemo(() => React$1.Children.toArray(children).filter(React$1.isValidElement), [children]);
123950
+ const count = Math.max(items.length, 1);
123951
+ const clampedIndex = clampIndex(activeIndex, items.length);
123952
+ return (React$1.createElement(Box$1, { sx: { pt: `${NOTCHED_BAR_PROTRUSION}px` } },
123953
+ React$1.createElement(Box$1, { sx: {
123954
+ position: "relative",
123955
+ height: NOTCHED_BAR_HEIGHT,
123956
+ borderRadius: 999,
123957
+ bgcolor: (theme) => { var _a, _b; return (_b = (_a = theme.brand) === null || _a === void 0 ? void 0 : _a.coal) !== null && _b !== void 0 ? _b : "#201C10"; },
123958
+ boxShadow: (theme) => theme.palette.mode === "dark"
123959
+ ? "0 8px 28px rgba(0,0,0,0.45)"
123960
+ : "0 8px 28px rgba(0,0,0,0.18)",
123961
+ border: (theme) => theme.palette.mode === "dark"
123962
+ ? "1px solid rgba(243,226,179,0.16)"
123963
+ : "1px solid transparent",
123964
+ } },
123965
+ React$1.createElement(Box$1, { "aria-hidden": true, "data-testid": "notched-bottom-bar-notch", "data-active-index": clampedIndex, style: {
123966
+ transform: `translateX(${clampedIndex * 100}%)`,
123967
+ transition: reduceMotion ? "none" : NOTCH_TRANSITION,
123968
+ }, sx: {
123969
+ position: "absolute",
123970
+ zIndex: 1,
123971
+ top: -NOTCHED_BAR_PROTRUSION,
123972
+ left: 0,
123973
+ width: `${100 / count}%`,
123974
+ height: NOTCHED_CIRCLE,
123975
+ display: "flex",
123976
+ justifyContent: "center",
123977
+ pointerEvents: "none",
123978
+ "@media (prefers-reduced-motion: reduce)": {
123979
+ transition: "none",
123980
+ },
123981
+ } },
123982
+ React$1.createElement(Box$1, { sx: {
123983
+ width: NOTCHED_CIRCLE,
123984
+ height: NOTCHED_CIRCLE,
123985
+ borderRadius: "50%",
123986
+ bgcolor: "background.default",
123987
+ position: "relative",
123988
+ "&::before, &::after": {
123989
+ content: '""',
123990
+ position: "absolute",
123991
+ top: "50%",
123992
+ width: 18,
123993
+ height: 18,
123994
+ background: "transparent",
123995
+ },
123996
+ "&::before": {
123997
+ left: -16,
123998
+ borderTopRightRadius: 18,
123999
+ boxShadow: (theme) => { var _a, _b; return `0 -10px 0 0 ${(_b = (_a = theme.brand) === null || _a === void 0 ? void 0 : _a.coal) !== null && _b !== void 0 ? _b : "#201C10"}`; },
124000
+ },
124001
+ "&::after": {
124002
+ right: -16,
124003
+ borderTopLeftRadius: 18,
124004
+ boxShadow: (theme) => { var _a, _b; return `0 -10px 0 0 ${(_b = (_a = theme.brand) === null || _a === void 0 ? void 0 : _a.coal) !== null && _b !== void 0 ? _b : "#201C10"}`; },
124005
+ },
124006
+ } })),
124007
+ React$1.createElement(Box$1, { role: "group", "aria-label": ariaLabel, sx: {
124008
+ position: "relative",
124009
+ zIndex: 2,
124010
+ display: "flex",
124011
+ alignItems: "stretch",
124012
+ height: "100%",
124013
+ } }, items.map((child, index) => {
124014
+ var _a;
124015
+ return React$1.cloneElement(child, {
124016
+ key: (_a = child.key) !== null && _a !== void 0 ? _a : index,
124017
+ active: index === clampedIndex,
124018
+ });
124019
+ })))));
124020
+ };
124021
+
123883
124022
  const installPromptPropsSchema = objectType({
123884
124023
  appName: stringType().min(1).default("App"),
123885
124024
  // iconSrc removed, now using logo from assets
@@ -130830,293 +130969,6 @@ const BlockDialog = ({ open, displayName, onClose, onConfirm, submitting = false
130830
130969
  React$1.createElement(Button$1, { onClick: onClose, disabled: submitting }, "Cancelar"),
130831
130970
  React$1.createElement(Button$1, { color: "error", variant: "contained", onClick: onConfirm, disabled: submitting }, "Bloquear"))));
130832
130971
 
130833
- /**
130834
- * Shared TopBar stack heights and content-offset helpers.
130835
- *
130836
- * Use these to clear a fixed TopBar from page content, accounting for
130837
- * expanded/collapsed chrome and whether Acesso Rápido (QuickActions) is shown.
130838
- *
130839
- * @remarks
130840
- * For fixed-chrome pages (e.g. HomePage), prefer **measured** clearance via
130841
- * `MeasuredLayoutProvider` + `useContentClearance` so padding tracks live
130842
- * TopBar/BottomNav height (Acesso Rápido hide/show, grid vs horizontal, scroll
130843
- * collapse). Keep these helpers as **fallback** before the first ResizeObserver
130844
- * paint and for non-measured callers.
130845
- */
130846
- /**
130847
- * Canonical TopBar-related heights (px) used for layout clearance.
130848
- *
130849
- * @remarks
130850
- * - `collapsed` — TopBar chrome when the greeting section is collapsed
130851
- * - `expanded` — legacy aggregate expanded height (prefer {@link getTopBarExpandedHeight})
130852
- * - `quickActionsCompact` — compact Acesso Rápido strip while collapsed
130853
- * - `primaryOnly` — greeting/avatar row when QuickActions are hidden
130854
- * (avatar 40px + CARD_PADDING vertical: xs 32 / sm+ 48, stepped for md)
130855
- */
130856
- const TOP_BAR_HEIGHTS = {
130857
- collapsed: { xs: 56, sm: 64, md: 72 },
130858
- expanded: { xs: 180, sm: 200, md: 220 },
130859
- quickActionsCompact: { xs: 60, sm: 64 },
130860
- primaryOnly: { xs: 72, sm: 88, md: 104 },
130861
- };
130862
- const addOffset = (heights, additionalOffset) => ({
130863
- xs: heights.xs + additionalOffset,
130864
- sm: heights.sm + additionalOffset,
130865
- md: heights.md + additionalOffset,
130866
- });
130867
- /**
130868
- * Expanded TopBar height including full QuickActions, by layout.
130869
- *
130870
- * @param layout - QuickActionsBar layout (`grid` needs more xs height than `horizontal`)
130871
- */
130872
- const getTopBarExpandedHeight = (layout = "horizontal") => ({
130873
- xs: layout === "grid" ? 170 : 120,
130874
- sm: TOP_BAR_HEIGHTS.expanded.sm,
130875
- md: TOP_BAR_HEIGHTS.expanded.md,
130876
- });
130877
- /**
130878
- * TopBar height for simple expanded/collapsed toggles (ignores QuickActions layout).
130879
- *
130880
- * @param isExpanded - Whether the TopBar is expanded
130881
- */
130882
- const getTopBarHeight = (isExpanded) => isExpanded ? TOP_BAR_HEIGHTS.expanded : TOP_BAR_HEIGHTS.collapsed;
130883
- /**
130884
- * Fixed TopBar stack height that page content must clear.
130885
- *
130886
- * - QuickActions hidden → primary greeting only
130887
- * - Expanded + QuickActions → layout-aware expanded height
130888
- * - Collapsed + QuickActions → collapsed chrome + compact QuickActions
130889
- */
130890
- const getTopBarStackHeight = ({ isExpanded, showQuickActions = true, layout = "horizontal", }) => {
130891
- if (!showQuickActions) {
130892
- return Object.assign({}, TOP_BAR_HEIGHTS.primaryOnly);
130893
- }
130894
- if (isExpanded) {
130895
- return getTopBarExpandedHeight(layout);
130896
- }
130897
- const base = TOP_BAR_HEIGHTS.collapsed;
130898
- const compact = TOP_BAR_HEIGHTS.quickActionsCompact;
130899
- return {
130900
- xs: base.xs + compact.xs,
130901
- sm: base.sm + compact.sm,
130902
- md: base.md + compact.sm,
130903
- };
130904
- };
130905
- /**
130906
- * `padding-top` for page content under a fixed TopBar.
130907
- *
130908
- * @example
130909
- * ```ts
130910
- * getContentPaddingTop({
130911
- * isExpanded: true,
130912
- * showQuickActions: false,
130913
- * additionalOffset: 8,
130914
- * })
130915
- * ```
130916
- */
130917
- const getContentPaddingTop = ({ isExpanded, showQuickActions = true, layout = "horizontal", additionalOffset = 0, }) => addOffset(getTopBarStackHeight({ isExpanded, showQuickActions, layout }), additionalOffset);
130918
- /**
130919
- * Companion `margin-top` for content under a fixed TopBar.
130920
- *
130921
- * Uses full padding when expanded or when QuickActions are hidden
130922
- * (TopBar does not collapse without QuickActions). Halves when collapsed
130923
- * with QuickActions visible for a tighter scroll layout.
130924
- */
130925
- const getContentMarginTop = ({ isExpanded, showQuickActions = true, layout = "horizontal", additionalOffset = 0, }) => {
130926
- const padding = getContentPaddingTop({
130927
- isExpanded,
130928
- showQuickActions,
130929
- layout,
130930
- additionalOffset,
130931
- });
130932
- const useFullMargin = !showQuickActions || isExpanded;
130933
- return {
130934
- xs: useFullMargin ? padding.xs : padding.xs / 2,
130935
- sm: useFullMargin ? padding.sm : padding.sm / 2,
130936
- md: useFullMargin ? padding.md : padding.md / 2,
130937
- };
130938
- };
130939
-
130940
- /**
130941
- * HomePage Design System Constants
130942
- *
130943
- * This file defines the design tokens for consistent spacing, animations,
130944
- * and component dimensions across the HomePage and its child components.
130945
- *
130946
- * Following Material Design principles and mobile-first responsive design.
130947
- *
130948
- * TopBar content-offset helpers live in `theme/topBarLayout` and are
130949
- * re-exported here for HomePage callers. Prefer measured clearance
130950
- * (`MeasuredLayoutProvider` + `useContentClearance`) for fixed chrome pages;
130951
- * these constants remain useful as fallbacks and for non-measured callers.
130952
- */
130953
- /** Max unread notifications shown in the home bell quick panel. */
130954
- const HOME_BELL_NOTIFICATION_LIMIT = 3;
130955
- /**
130956
- * Animation Durations (in milliseconds)
130957
- * Based on Material Design motion guidelines
130958
- */
130959
- const ANIMATION_DURATION = {
130960
- fast: 150, // Quick feedback interactions
130961
- normal: 300, // Standard transitions
130962
- slow: 500, // Emphasis animations
130963
- enter: 225, // Material entrance timing
130964
- exit: 195, // Material exit timing
130965
- };
130966
- /**
130967
- * Animation Easing Functions
130968
- * Material Design standard easing curves
130969
- */
130970
- const ANIMATION_EASING = {
130971
- standard: "cubic-bezier(0.4, 0, 0.2, 1)", // Standard curve
130972
- decelerate: "cubic-bezier(0.0, 0, 0.2, 1)", // Deceleration curve
130973
- accelerate: "cubic-bezier(0.4, 0, 1, 1)", // Acceleration curve
130974
- sharp: "cubic-bezier(0.4, 0, 0.6, 1)", // Sharp curve
130975
- spring: "cubic-bezier(0.34, 1.56, 0.64, 1)", // Spring-like bounce
130976
- };
130977
- /**
130978
- * Component Heights
130979
- * Responsive heights for major UI components
130980
- */
130981
- /**
130982
- * Defines standard heights for various UI components on the HomePage, supporting responsive design.
130983
- *
130984
- * @remarks
130985
- * The `COMPONENT_HEIGHTS` object provides pixel or viewport-based height values for different components,
130986
- * with breakpoints for extra-small (`xs`), small (`sm`), and medium (`md`) screens where applicable.
130987
- * This ensures consistent layout and spacing across devices.
130988
- *
130989
- * @property topBar - Heights (in pixels) for the TopBar component in its collapsed state.
130990
- * - Example: On a small screen (`sm`), the TopBar height is 64px.
130991
- * @property topBarExpanded - Heights (in pixels) for the TopBar when expanded (e.g., showing QuickActions).
130992
- * - Example: On a medium screen (`md`), the expanded TopBar height is 220px.
130993
- * @property quickActionsCompact - Heights (in pixels) for the QuickActionsBar in compact mode.
130994
- * - Example: On an extra-small screen (`xs`), the QuickActionsBar height is 60px.
130995
- * @property bottomNav - Content clearance for the floating Home bottom nav pill
130996
- * (inner height 52 + float margin 16). Keep in sync with
130997
- * `HOME_BOTTOM_NAV_CLEARANCE` in `HomeBottomNav.tsx`.
130998
- * @property featuredCard - Minimum heights (in pixels) for the featured event card.
130999
- * - Example: On a small screen (`sm`), the featured card has a minimum height of 220px.
131000
- */
131001
- const COMPONENT_HEIGHTS = {
131002
- // TopBar heights in collapsed state
131003
- topBar: TOP_BAR_HEIGHTS.collapsed,
131004
- // TopBar heights in expanded state (with QuickActions)
131005
- topBarExpanded: TOP_BAR_HEIGHTS.expanded, // xs: 120 when on horizontal and 170 when on grid
131006
- // QuickActionsBar height in compact mode
131007
- quickActionsCompact: TOP_BAR_HEIGHTS.quickActionsCompact,
131008
- // Primary greeting only (QuickActions hidden)
131009
- topBarPrimary: TOP_BAR_HEIGHTS.primaryOnly,
131010
- // Floating pill clearance (52 + 16); matches HOME_BOTTOM_NAV_CLEARANCE
131011
- bottomNav: 68,
131012
- // Featured event card minimum height (fixed pixels for uniform cards)
131013
- featuredCard: { xs: 200, sm: 220, md: 240 },
131014
- };
131015
- /**
131016
- * Scroll Behavior Constants
131017
- */
131018
- const SCROLL_CONFIG = {
131019
- // Threshold in pixels before collapsing TopBar
131020
- collapseThreshold: 100,
131021
- // Threshold in pixels before showing scroll-to-top button
131022
- scrollToTopThreshold: 300,
131023
- // Debounce delay for scroll events (ms)
131024
- scrollDebounce: 16, // ~60fps
131025
- };
131026
- /**
131027
- * Touch Interaction Constants
131028
- */
131029
- const TOUCH_CONFIG = {
131030
- // Minimum touch target size (accessibility)
131031
- minTouchTarget: 48,
131032
- // Long press duration (ms)
131033
- longPressDuration: 400,
131034
- // Swipe threshold distance (px)
131035
- swipeThreshold: 50,
131036
- // Swipe velocity threshold (px/ms)
131037
- swipeVelocity: 0.3,
131038
- };
131039
- /**
131040
- * HomePage Section Configurations
131041
- *
131042
- * Defines the structure and metadata for each major section of the HomePage.
131043
- * Used with SectionHeader component to provide consistent section labeling.
131044
- */
131045
- const HOME_SECTIONS = {
131046
- WELCOME: {
131047
- id: "welcome",
131048
- title: "Bem-vindo",
131049
- icon: "Waving Hand",
131050
- showDivider: false,
131051
- },
131052
- WEEKLY_TASKS: {
131053
- id: "weekly-tasks",
131054
- title: "Tarefas da semana",
131055
- subtitle: "Pequenas ações para usar o que a casa já tem no sistema",
131056
- icon: "TaskAlt",
131057
- showDivider: false,
131058
- },
131059
- PROFILE_COMPLETENESS: {
131060
- id: "profile-completeness",
131061
- title: "Completude do perfil",
131062
- subtitle: "Acompanhe o que ainda falta para deixar seu perfil completo",
131063
- icon: "Person",
131064
- showDivider: false,
131065
- },
131066
- TERREIRO_COMPLETENESS: {
131067
- id: "terreiro-completeness",
131068
- title: "Perfil do Terreiro",
131069
- subtitle: "Acompanhe o que ainda falta no perfil da casa (avatar, contato e endereço)",
131070
- icon: "Home",
131071
- showDivider: false,
131072
- },
131073
- PROGRESS: {
131074
- id: "progress",
131075
- title: "Seu Progresso",
131076
- subtitle: "Acompanhe seu desenvolvimento e conquistas",
131077
- icon: "TrendingUp",
131078
- actionLabel: "Ver Tudo",
131079
- showDivider: false,
131080
- },
131081
- ATTENDANCE: {
131082
- id: "attendance",
131083
- title: "Presença do Período",
131084
- subtitle: "Confirmação e presença real dos médiuns",
131085
- icon: "TrendingUp",
131086
- actionLabel: "Ver médiuns",
131087
- showDivider: false,
131088
- },
131089
- SUPPLY_PLAN: {
131090
- id: "supply-plan",
131091
- title: "Planejamento de Insumos",
131092
- subtitle: "Resumo do que comprar e missões de insumos da casa",
131093
- icon: "Inventory2",
131094
- showDivider: false,
131095
- },
131096
- CALENDAR: {
131097
- id: "calendar",
131098
- title: "Próximas Atividades",
131099
- subtitle: "Seus eventos e compromissos",
131100
- icon: "CalendarMonth",
131101
- actionLabel: "Ver Calendário",
131102
- showDivider: false,
131103
- },
131104
- SPIRITUALITY: {
131105
- id: "spirituality",
131106
- title: "Espiritualidade",
131107
- subtitle: "Fase lunar e rituais recomendados",
131108
- icon: "AutoAwesome",
131109
- showDivider: false,
131110
- },
131111
- HIGHLIGHTS: {
131112
- id: "highlights",
131113
- title: "Em Destaque",
131114
- subtitle: "Próximos eventos do terreiro",
131115
- icon: "Star",
131116
- showDivider: false,
131117
- },
131118
- };
131119
-
131120
130972
  const SOCIAL_HOME_HEADER_HEIGHT = 53;
131121
130973
  const SocialHomeHeader = ({ avatarUrl, displayName = "Você", fixed = true, isScrolling = false, onOpenDrawer, onOpenFollow, }) => (React$1.createElement(Box$1, { component: "header", "data-testid": "social-home-header", sx: Object.assign({}, (fixed
131122
130974
  ? {
@@ -131453,12 +131305,16 @@ function useHideOnScroll(options = {}) {
131453
131305
  return { isScrolling };
131454
131306
  }
131455
131307
 
131456
- /** Inner pill height (actions row). */
131457
- const SOCIAL_HOME_BOTTOM_NAV_HEIGHT = 52;
131308
+ /** Inner pill height (actions row), excluding the notch that rises above it. */
131309
+ const SOCIAL_HOME_BOTTOM_NAV_HEIGHT = NOTCHED_BAR_HEIGHT;
131310
+ /** Circle that rises above the pill. Included in measured clearance. */
131311
+ const SOCIAL_HOME_BOTTOM_NAV_PROTRUSION = NOTCHED_BAR_PROTRUSION;
131458
131312
  /** Float margin below the pill. */
131459
131313
  const SOCIAL_HOME_BOTTOM_NAV_FLOAT_MB = 16;
131460
- /** Total clearance for feed padding (pill + float margin). */
131461
- const SOCIAL_HOME_BOTTOM_NAV_CLEARANCE = SOCIAL_HOME_BOTTOM_NAV_HEIGHT + SOCIAL_HOME_BOTTOM_NAV_FLOAT_MB;
131314
+ /** Total clearance for feed padding (circle + pill + float margin). */
131315
+ const SOCIAL_HOME_BOTTOM_NAV_CLEARANCE = SOCIAL_HOME_BOTTOM_NAV_PROTRUSION +
131316
+ SOCIAL_HOME_BOTTOM_NAV_HEIGHT +
131317
+ SOCIAL_HOME_BOTTOM_NAV_FLOAT_MB;
131462
131318
  const SocialHomeBottomNav = ({ active = "home", messagesUnreadCount = 0, notificationsUnreadCount = 0, onNavigateHome, onOpenMessages, onOpenNotifications, onOpenSearch, isScrolling: isScrollingProp, }) => {
131463
131319
  const { isScrolling: internalScrolling } = useHideOnScroll();
131464
131320
  const isScrolling = isScrollingProp !== null && isScrollingProp !== void 0 ? isScrollingProp : internalScrolling;
@@ -131492,52 +131348,22 @@ const SocialHomeBottomNav = ({ active = "home", messagesUnreadCount = 0, notific
131492
131348
  px: 2,
131493
131349
  mb: `${SOCIAL_HOME_BOTTOM_NAV_FLOAT_MB}px`,
131494
131350
  } },
131495
- React$1.createElement(Box$1, { sx: {
131496
- width: "fit-content",
131497
- maxWidth: 320,
131498
- borderRadius: 999,
131499
- overflow: "hidden",
131500
- bgcolor: (theme) => alpha(theme.palette.background.default, 0.92),
131501
- backdropFilter: "blur(16px)",
131502
- boxShadow: (theme) => theme.palette.mode === "dark"
131503
- ? "0 8px 28px rgba(0,0,0,0.45)"
131504
- : "0 8px 28px rgba(0,0,0,0.12)",
131505
- border: 1,
131506
- borderColor: (theme) => theme.palette.mode === "dark"
131507
- ? "rgba(255,255,255,0.08)"
131508
- : "rgba(0,0,0,0.06)",
131509
- } },
131510
- React$1.createElement(BottomNavigation$1, { showLabels: true, value: value, sx: {
131511
- height: SOCIAL_HOME_BOTTOM_NAV_HEIGHT,
131512
- width: 292,
131513
- bgcolor: "transparent",
131514
- "& .MuiBottomNavigationAction-root": {
131515
- color: "text.secondary",
131516
- minWidth: 0,
131517
- flex: 1,
131518
- px: 0.25,
131519
- py: 0.5,
131520
- "&.Mui-selected": { color: "primary.main" },
131521
- },
131522
- "& .MuiBottomNavigationAction-label": {
131523
- fontSize: "0.6rem",
131524
- mt: 0.15,
131525
- "&.Mui-selected": { fontSize: "0.6rem" },
131526
- },
131527
- "& .MuiSvgIcon-root": {
131528
- fontSize: 20,
131529
- },
131530
- } },
131531
- React$1.createElement(BottomNavigationAction$1, { label: "Home", icon: React$1.createElement(Home$1, null), onClick: onNavigateHome }),
131532
- React$1.createElement(BottomNavigationAction$1, { label: "Mensagens", "aria-label": messagesUnreadCount > 0
131351
+ React$1.createElement(Box$1, { sx: { width: 292, maxWidth: "100%" } },
131352
+ React$1.createElement(NotchedBottomBar, { activeIndex: value, "aria-label": "Navega\u00E7\u00E3o social" },
131353
+ React$1.createElement(NotchedBottomBarItem, { label: "Home", onClick: onNavigateHome },
131354
+ React$1.createElement(Home$1, null)),
131355
+ React$1.createElement(NotchedBottomBarItem, { label: messagesUnreadCount > 0
131533
131356
  ? `Mensagens, ${messagesUnreadCount} não lidas`
131534
- : "Mensagens", icon: React$1.createElement(Badge$1, { color: "primary", badgeContent: messagesUnreadCount, max: 99, invisible: !messagesUnreadCount, "data-testid": "social-nav-messages-badge" },
131535
- React$1.createElement(MailOutline$1, null)), onClick: onOpenMessages }),
131536
- React$1.createElement(BottomNavigationAction$1, { label: "Notifica\u00E7\u00F5es", "aria-label": notificationsUnreadCount > 0
131357
+ : "Mensagens", onClick: onOpenMessages },
131358
+ React$1.createElement(Badge$1, { color: "primary", badgeContent: messagesUnreadCount, max: 99, invisible: !messagesUnreadCount, "data-testid": "social-nav-messages-badge" },
131359
+ React$1.createElement(MailOutline$1, null))),
131360
+ React$1.createElement(NotchedBottomBarItem, { label: notificationsUnreadCount > 0
131537
131361
  ? `Notificações, ${notificationsUnreadCount} não lidas`
131538
- : "Notificações", icon: React$1.createElement(Badge$1, { color: "primary", badgeContent: notificationsUnreadCount, max: 99, invisible: !notificationsUnreadCount, "data-testid": "social-nav-notifications-badge" },
131539
- React$1.createElement(NotificationsNone, null)), onClick: onOpenNotifications }),
131540
- React$1.createElement(BottomNavigationAction$1, { label: "Buscar", icon: React$1.createElement(Search$1, null), onClick: onOpenSearch }))))));
131362
+ : "Notificações", onClick: onOpenNotifications },
131363
+ React$1.createElement(Badge$1, { color: "primary", badgeContent: notificationsUnreadCount, max: 99, invisible: !notificationsUnreadCount, "data-testid": "social-nav-notifications-badge" },
131364
+ React$1.createElement(NotificationsNone, null))),
131365
+ React$1.createElement(NotchedBottomBarItem, { label: "Buscar", onClick: onOpenSearch },
131366
+ React$1.createElement(Search$1, null)))))));
131541
131367
  };
131542
131368
 
131543
131369
  const SocialUnreadIndicator = ({ count, label = "Novas mensagens", compact = false, }) => {
@@ -143948,7 +143774,9 @@ const MonthlyFeeCard = React$1.memo(({ formatCurrency, monthlyFee, dueDay, payme
143948
143774
  };
143949
143775
  return (React$1.createElement(Card$1, { "data-testid": "monthly-fee-action-card", sx: {
143950
143776
  borderRadius: RADIUS.default,
143951
- boxShadow: theme.shadows[2],
143777
+ boxShadow: "none",
143778
+ border: 1,
143779
+ borderColor: "divider",
143952
143780
  overflow: "hidden",
143953
143781
  } },
143954
143782
  React$1.createElement(CardHeader$1, { title: React$1.createElement(Stack$1, { direction: "row", alignItems: "center", justifyContent: "space-between", spacing: LIST_GAP },
@@ -143982,13 +143810,17 @@ const MonthlyFeeCard = React$1.memo(({ formatCurrency, monthlyFee, dueDay, payme
143982
143810
  cursor: isSelectable ? "pointer" : "default",
143983
143811
  borderRadius: RADIUS.default,
143984
143812
  outline: "none",
143985
- transition: "background-color 0.2s ease, box-shadow 0.2s ease",
143813
+ transition: "background-color 0.2s ease",
143986
143814
  "&:hover": isSelectable
143987
143815
  ? {
143988
143816
  bgcolor: theme.palette.action.hover,
143989
- boxShadow: `inset 0 0 0 1px ${alpha(theme.palette.info.main, 0.24)}`,
143990
143817
  }
143991
143818
  : undefined,
143819
+ "&:focus-visible": {
143820
+ outline: "2px solid",
143821
+ outlineColor: theme.palette.primary.main,
143822
+ outlineOffset: 2,
143823
+ },
143992
143824
  } },
143993
143825
  React$1.createElement(Stack$1, { spacing: 0.5, sx: { mb: 1.5 } },
143994
143826
  React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: { letterSpacing: 0.2 } }, "Valor da mensalidade"),
@@ -144056,7 +143888,7 @@ const MetricItem = React$1.memo(({ icon, label, value, color, isLoading, }) => {
144056
143888
  });
144057
143889
  MetricItem.displayName = "MetricItem";
144058
143890
  // Member payments progress component
144059
- const MemberPaymentsSection = React$1.memo(({ data, isLoading }) => {
143891
+ const MemberPaymentsSection = React$1.memo(({ data, isLoading, collectedLabel, expectedLabel, }) => {
144060
143892
  const theme = useTheme$1();
144061
143893
  if (isLoading) {
144062
143894
  return (React$1.createElement(Box$1, { sx: {
@@ -144099,7 +143931,11 @@ const MemberPaymentsSection = React$1.memo(({ data, isLoading }) => {
144099
143931
  bgcolor: progressColor,
144100
143932
  borderRadius: RADIUS.default,
144101
143933
  },
144102
- } })));
143934
+ } }),
143935
+ collectedLabel && expectedLabel ? (React$1.createElement(Typography$1, { variant: "caption", color: "text.secondary", sx: { mt: 0.75 } },
143936
+ collectedLabel,
143937
+ " recebidos de ",
143938
+ expectedLabel)) : null));
144103
143939
  });
144104
143940
  MemberPaymentsSection.displayName = "MemberPaymentsSection";
144105
143941
  // Category breakdown list component
@@ -144148,7 +143984,7 @@ const CategoryBreakdownSection = React$1.memo(({ title, categories, color, isLoa
144148
143984
  });
144149
143985
  CategoryBreakdownSection.displayName = "CategoryBreakdownSection";
144150
143986
  const FinancialOverviewCard = React$1.memo(({ data, isLoading = false, formatCurrency, onClick, defaultExpanded = false, showMemberPayments = true, }) => {
144151
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6;
143987
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
144152
143988
  const theme = useTheme$1();
144153
143989
  const [isExpandedManually, setIsExpandedManually] = React$1.useState(defaultExpanded);
144154
143990
  // Helper to format values
@@ -144162,66 +143998,47 @@ const FinancialOverviewCard = React$1.memo(({ data, isLoading = false, formatCur
144162
143998
  currency: "BRL",
144163
143999
  }).format(value);
144164
144000
  };
144165
- // Get the current month name in Portuguese
144166
- const getCurrentMonthName = () => {
144167
- var _a, _b;
144168
- if ((_b = (_a = data === null || data === void 0 ? void 0 : data.overview) === null || _a === void 0 ? void 0 : _a.period) === null || _b === void 0 ? void 0 : _b.start) {
144169
- const date = new Date(data.overview.period.start);
144170
- // Use UTC methods to avoid timezone conversion issues
144171
- const year = date.getUTCFullYear();
144172
- const month = date.getUTCMonth();
144173
- // Create a date in the local timezone with the correct year/month
144174
- const localDate = new Date(year, month, 1);
144175
- return localDate.toLocaleDateString("pt-BR", {
144176
- month: "long",
144177
- year: "numeric",
144178
- });
144179
- }
144180
- return new Date().toLocaleDateString("pt-BR", {
144181
- month: "long",
144182
- year: "numeric",
144183
- });
144184
- };
144185
144001
  // Determine if net flow is positive or negative
144186
- const netFlowColor = ((_b = (_a = data === null || data === void 0 ? void 0 : data.overview) === null || _a === void 0 ? void 0 : _a.netFlow) !== null && _b !== void 0 ? _b : 0) >= 0
144002
+ const balanceColor = ((_b = (_a = data === null || data === void 0 ? void 0 : data.overview) === null || _a === void 0 ? void 0 : _a.totalBalance) !== null && _b !== void 0 ? _b : 0) < 0
144003
+ ? theme.palette.error.main
144004
+ : theme.palette.success.main;
144005
+ const netFlowColor = ((_d = (_c = data === null || data === void 0 ? void 0 : data.overview) === null || _c === void 0 ? void 0 : _c.netFlow) !== null && _d !== void 0 ? _d : 0) >= 0
144187
144006
  ? theme.palette.success.main
144188
144007
  : theme.palette.error.main;
144189
- const hasCorrections = ((_d = (_c = data === null || data === void 0 ? void 0 : data.corrections) === null || _c === void 0 ? void 0 : _c.totalCorrections) !== null && _d !== void 0 ? _d : 0) > 0;
144008
+ const hasCorrections = ((_f = (_e = data === null || data === void 0 ? void 0 : data.corrections) === null || _e === void 0 ? void 0 : _e.totalCorrections) !== null && _f !== void 0 ? _f : 0) > 0;
144190
144009
  const hasMemberPayments = showMemberPayments &&
144191
144010
  (data === null || data === void 0 ? void 0 : data.memberPayments) &&
144192
144011
  data.memberPayments.totalMembers > 0;
144193
144012
  const hasCategories = ((data === null || data === void 0 ? void 0 : data.incomeByCategory) && data.incomeByCategory.length > 0) ||
144194
144013
  ((data === null || data === void 0 ? void 0 : data.outcomeByCategory) && data.outcomeByCategory.length > 0);
144195
- const hasMultipleCategories = ((_f = (_e = data === null || data === void 0 ? void 0 : data.incomeByCategory) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0) > 1 ||
144196
- ((_h = (_g = data === null || data === void 0 ? void 0 : data.outcomeByCategory) === null || _g === void 0 ? void 0 : _g.length) !== null && _h !== void 0 ? _h : 0) > 1;
144197
- const expanded = hasMultipleCategories ? true : isExpandedManually;
144014
+ const expanded = isExpandedManually;
144198
144015
  React$1.useEffect(() => {
144199
144016
  setIsExpandedManually(defaultExpanded);
144200
144017
  }, [defaultExpanded]);
144201
144018
  const handleToggleExpand = (e) => {
144202
- if (hasMultipleCategories)
144203
- return;
144204
144019
  e.stopPropagation();
144205
144020
  setIsExpandedManually((current) => !current);
144206
144021
  };
144207
144022
  return (React$1.createElement(Card$1, { onClick: onClick, sx: {
144208
144023
  borderRadius: RADIUS.default,
144209
- boxShadow: theme.shadows[2],
144024
+ boxShadow: "none",
144025
+ border: 1,
144026
+ borderColor: "divider",
144210
144027
  overflow: "hidden",
144211
144028
  cursor: onClick ? "pointer" : "default",
144212
- "&:hover": onClick ? { boxShadow: theme.shadows[4] } : undefined,
144213
- transition: "box-shadow 0.2s ease",
144029
+ outline: "none",
144030
+ "&:hover": onClick
144031
+ ? { borderColor: "primary.main", boxShadow: "none" }
144032
+ : undefined,
144033
+ "&:focus-visible": {
144034
+ outline: "2px solid",
144035
+ outlineColor: "primary.main",
144036
+ outlineOffset: 2,
144037
+ },
144214
144038
  } },
144215
144039
  React$1.createElement(CardHeader$1, { title: React$1.createElement(Stack$1, { direction: "row", alignItems: "center", justifyContent: "space-between", spacing: LIST_GAP },
144216
- React$1.createElement(Stack$1, { direction: "row", alignItems: "center", spacing: 1 },
144217
- React$1.createElement(Typography$1, { variant: "subtitle1", sx: { fontWeight: 700, color: "text.primary" } }, "Resumo Financeiro"),
144218
- React$1.createElement(Chip$1, { size: "small", label: getCurrentMonthName(), color: "primary", variant: "outlined", sx: {
144219
- bgcolor: alpha(theme.palette.primary.main, 0.08),
144220
- borderColor: alpha(theme.palette.primary.main, 0.3),
144221
- fontWeight: 500,
144222
- textTransform: "capitalize",
144223
- } })),
144224
- hasCorrections && (React$1.createElement(Chip$1, { size: "small", icon: React$1.createElement(BuildIcon, { sx: { fontSize: 14 } }), label: `${(_j = data === null || data === void 0 ? void 0 : data.corrections) === null || _j === void 0 ? void 0 : _j.totalCorrections} correções`, color: "warning", variant: "outlined", sx: {
144040
+ React$1.createElement(Typography$1, { variant: "subtitle1", sx: { fontWeight: 700, color: "text.primary" } }, "Resumo Financeiro"),
144041
+ hasCorrections && (React$1.createElement(Chip$1, { size: "small", icon: React$1.createElement(BuildIcon, { sx: { fontSize: 14 } }), label: `${(_g = data === null || data === void 0 ? void 0 : data.corrections) === null || _g === void 0 ? void 0 : _g.totalCorrections} correções`, color: "warning", variant: "outlined", sx: {
144225
144042
  bgcolor: alpha(theme.palette.warning.main, 0.08),
144226
144043
  borderColor: alpha(theme.palette.warning.main, 0.3),
144227
144044
  fontWeight: 500,
@@ -144235,28 +144052,18 @@ const FinancialOverviewCard = React$1.memo(({ data, isLoading = false, formatCur
144235
144052
  React$1.createElement(Box$1, { sx: {
144236
144053
  p: CARD_PADDING,
144237
144054
  borderRadius: RADIUS.default,
144238
- bgcolor: alpha(((_l = (_k = data === null || data === void 0 ? void 0 : data.overview) === null || _k === void 0 ? void 0 : _k.totalBalance) !== null && _l !== void 0 ? _l : 0) < 0
144239
- ? theme.palette.primary.main
144240
- : theme.palette.success.main, 0.04),
144241
- border: `1px solid ${alpha(((_o = (_m = data === null || data === void 0 ? void 0 : data.overview) === null || _m === void 0 ? void 0 : _m.totalBalance) !== null && _o !== void 0 ? _o : 0) < 0
144242
- ? theme.palette.primary.main
144243
- : theme.palette.success.main, 0.1)}`,
144055
+ bgcolor: alpha(balanceColor, 0.04),
144056
+ border: `1px solid ${alpha(balanceColor, 0.1)}`,
144244
144057
  } },
144245
144058
  React$1.createElement(MetricItem, { icon: React$1.createElement(AccountBalanceIcon, { fontSize: "small" }), label: "Saldo Total (todas as contas)", value: isLoading
144246
144059
  ? ""
144247
- : format((_q = (_p = data === null || data === void 0 ? void 0 : data.overview) === null || _p === void 0 ? void 0 : _p.totalBalance) !== null && _q !== void 0 ? _q : 0, (_r = data === null || data === void 0 ? void 0 : data.formatted) === null || _r === void 0 ? void 0 : _r.totalBalance), color: ((_t = (_s = data === null || data === void 0 ? void 0 : data.overview) === null || _s === void 0 ? void 0 : _s.totalBalance) !== null && _t !== void 0 ? _t : 0) < 0
144248
- ? theme.palette.primary.main
144249
- : theme.palette.success.main, isLoading: isLoading }))),
144060
+ : format((_j = (_h = data === null || data === void 0 ? void 0 : data.overview) === null || _h === void 0 ? void 0 : _h.totalBalance) !== null && _j !== void 0 ? _j : 0, (_k = data === null || data === void 0 ? void 0 : data.formatted) === null || _k === void 0 ? void 0 : _k.totalBalance), color: balanceColor, isLoading: isLoading }))),
144250
144061
  (hasMemberPayments || isLoading) && (React$1.createElement(Grid$1, { item: true, xs: 12 },
144251
- React$1.createElement(MemberPaymentsSection, { data: data === null || data === void 0 ? void 0 : data.memberPayments, isLoading: isLoading }))),
144252
- React$1.createElement(Grid$1, { item: true, xs: 6 },
144253
- React$1.createElement(MetricItem, { icon: React$1.createElement(TrendingUp$1, { fontSize: "small" }), label: "Entradas (m\u00EAs)", value: isLoading
144254
- ? ""
144255
- : format((_v = (_u = data === null || data === void 0 ? void 0 : data.overview) === null || _u === void 0 ? void 0 : _u.totalIncome) !== null && _v !== void 0 ? _v : 0, (_w = data === null || data === void 0 ? void 0 : data.formatted) === null || _w === void 0 ? void 0 : _w.totalIncome), color: theme.palette.success.main, isLoading: isLoading })),
144256
- React$1.createElement(Grid$1, { item: true, xs: 6 },
144257
- React$1.createElement(MetricItem, { icon: React$1.createElement(TrendingDownIcon, { fontSize: "small" }), label: "Sa\u00EDdas (m\u00EAs)", value: isLoading
144258
- ? ""
144259
- : format((_y = (_x = data === null || data === void 0 ? void 0 : data.overview) === null || _x === void 0 ? void 0 : _x.totalOutcome) !== null && _y !== void 0 ? _y : 0, (_z = data === null || data === void 0 ? void 0 : data.formatted) === null || _z === void 0 ? void 0 : _z.totalOutcome), color: theme.palette.error.main, isLoading: isLoading })),
144062
+ React$1.createElement(MemberPaymentsSection, { data: data === null || data === void 0 ? void 0 : data.memberPayments, isLoading: isLoading, collectedLabel: isLoading
144063
+ ? undefined
144064
+ : format((_m = (_l = data === null || data === void 0 ? void 0 : data.memberPayments) === null || _l === void 0 ? void 0 : _l.collectedAmount) !== null && _m !== void 0 ? _m : 0, (_o = data === null || data === void 0 ? void 0 : data.formatted) === null || _o === void 0 ? void 0 : _o.memberPaymentsCollected), expectedLabel: isLoading
144065
+ ? undefined
144066
+ : format((_q = (_p = data === null || data === void 0 ? void 0 : data.memberPayments) === null || _p === void 0 ? void 0 : _p.expectedAmount) !== null && _q !== void 0 ? _q : 0, (_r = data === null || data === void 0 ? void 0 : data.formatted) === null || _r === void 0 ? void 0 : _r.memberPaymentsExpected) }))),
144260
144067
  React$1.createElement(Grid$1, { item: true, xs: 12 },
144261
144068
  React$1.createElement(Box$1, { sx: {
144262
144069
  p: LIST_CARD_CONTENT_PADDING,
@@ -144272,37 +144079,39 @@ const FinancialOverviewCard = React$1.memo(({ data, isLoading = false, formatCur
144272
144079
  fontWeight: 700,
144273
144080
  color: netFlowColor,
144274
144081
  } },
144275
- ((_1 = (_0 = data === null || data === void 0 ? void 0 : data.overview) === null || _0 === void 0 ? void 0 : _0.netFlow) !== null && _1 !== void 0 ? _1 : 0) >= 0 ? "+" : "",
144276
- format((_3 = (_2 = data === null || data === void 0 ? void 0 : data.overview) === null || _2 === void 0 ? void 0 : _2.netFlow) !== null && _3 !== void 0 ? _3 : 0, (_4 = data === null || data === void 0 ? void 0 : data.formatted) === null || _4 === void 0 ? void 0 : _4.netFlow))))),
144082
+ ((_t = (_s = data === null || data === void 0 ? void 0 : data.overview) === null || _s === void 0 ? void 0 : _s.netFlow) !== null && _t !== void 0 ? _t : 0) >= 0 ? "+" : "",
144083
+ format((_v = (_u = data === null || data === void 0 ? void 0 : data.overview) === null || _u === void 0 ? void 0 : _u.netFlow) !== null && _v !== void 0 ? _v : 0, (_w = data === null || data === void 0 ? void 0 : data.formatted) === null || _w === void 0 ? void 0 : _w.netFlow))))),
144277
144084
  (hasCategories || isLoading) && (React$1.createElement(Grid$1, { item: true, xs: 12 },
144278
- React$1.createElement(Box$1, { onClick: hasMultipleCategories ? undefined : handleToggleExpand, sx: {
144279
- cursor: hasMultipleCategories ? "default" : "pointer",
144085
+ React$1.createElement(Box$1, { component: "button", type: "button", onClick: handleToggleExpand, sx: {
144086
+ width: "100%",
144087
+ cursor: "pointer",
144280
144088
  display: "flex",
144281
144089
  alignItems: "center",
144282
144090
  justifyContent: "center",
144283
144091
  py: 0.5,
144284
144092
  color: theme.palette.text.secondary,
144093
+ background: "none",
144094
+ border: 0,
144285
144095
  "&:hover": {
144286
- color: hasMultipleCategories
144287
- ? theme.palette.text.secondary
144288
- : theme.palette.primary.main,
144096
+ color: theme.palette.primary.main,
144097
+ },
144098
+ "&:focus-visible": {
144099
+ outline: "2px solid",
144100
+ outlineColor: theme.palette.primary.main,
144101
+ outlineOffset: 2,
144289
144102
  },
144290
144103
  } },
144291
144104
  React$1.createElement(CategoryIcon, { sx: { fontSize: 16, mr: 0.5 } }),
144292
- React$1.createElement(Typography$1, { variant: "caption" }, hasMultipleCategories
144293
- ? "Categorias detalhadas"
144294
- : expanded
144295
- ? "Ocultar categorias"
144296
- : "Ver por categoria")),
144105
+ React$1.createElement(Typography$1, { variant: "caption", component: "span" }, expanded ? "Ocultar categorias" : "Ver por categoria")),
144297
144106
  React$1.createElement(Collapse$1, { in: expanded },
144298
144107
  React$1.createElement(Divider$1, { sx: { my: 1.5 } }),
144299
144108
  React$1.createElement(Grid$1, { container: true, spacing: GRID_GAP },
144300
- (((_5 = data === null || data === void 0 ? void 0 : data.incomeByCategory) === null || _5 === void 0 ? void 0 : _5.length) || isLoading) && (React$1.createElement(Grid$1, { item: true, xs: 12, sm: 6 },
144109
+ (((_x = data === null || data === void 0 ? void 0 : data.incomeByCategory) === null || _x === void 0 ? void 0 : _x.length) || isLoading) && (React$1.createElement(Grid$1, { item: true, xs: 12, sm: 6 },
144301
144110
  React$1.createElement(CategoryBreakdownSection, { title: "Entradas por Categoria", categories: data === null || data === void 0 ? void 0 : data.incomeByCategory, color: theme.palette.success.main, isLoading: isLoading, icon: React$1.createElement(TrendingUp$1, { sx: {
144302
144111
  fontSize: 16,
144303
144112
  color: theme.palette.success.main,
144304
144113
  } }) }))),
144305
- (((_6 = data === null || data === void 0 ? void 0 : data.outcomeByCategory) === null || _6 === void 0 ? void 0 : _6.length) || isLoading) && (React$1.createElement(Grid$1, { item: true, xs: 12, sm: 6 },
144114
+ (((_y = data === null || data === void 0 ? void 0 : data.outcomeByCategory) === null || _y === void 0 ? void 0 : _y.length) || isLoading) && (React$1.createElement(Grid$1, { item: true, xs: 12, sm: 6 },
144306
144115
  React$1.createElement(CategoryBreakdownSection, { title: "Sa\u00EDdas por Categoria", categories: data === null || data === void 0 ? void 0 : data.outcomeByCategory, color: theme.palette.error.main, isLoading: isLoading, icon: React$1.createElement(TrendingDownIcon, { sx: {
144307
144116
  fontSize: 16,
144308
144117
  color: theme.palette.error.main,
@@ -144412,7 +144221,6 @@ const AccountListItem = React$1.memo(({ account, isLastItem, onSelect, formatCur
144412
144221
  const theme = useTheme$1();
144413
144222
  const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
144414
144223
  // Convert string balances to numbers for formatting
144415
- const initialBalance = parseFloat(account.initialBalance);
144416
144224
  const currentBalance = parseFloat(account.currentBalance);
144417
144225
  return (React$1.createElement(ListItem$1, { "data-testid": `financial-account-list-item-${account.id}`, sx: {
144418
144226
  width: "100%",
@@ -144445,9 +144253,6 @@ const AccountListItem = React$1.memo(({ account, isLastItem, onSelect, formatCur
144445
144253
  account.agency,
144446
144254
  " | Conta: ",
144447
144255
  account.account)),
144448
- React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: { fontSize: { xs: "0.75rem", sm: "0.875rem" } } },
144449
- "Saldo inicial: ",
144450
- formatCurrency(initialBalance)),
144451
144256
  React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: { fontSize: { xs: "0.75rem", sm: "0.875rem" } } },
144452
144257
  "Saldo atual: ",
144453
144258
  formatCurrency(currentBalance)),
@@ -144495,8 +144300,7 @@ const EmptyState$2 = React$1.memo(({ onAddAccount, theme }) => {
144495
144300
  });
144496
144301
  EmptyState$2.displayName = "EmptyState";
144497
144302
  // Income/Outcome card component
144498
- const FinanceMetricCard = React$1.memo(({ title, value, month, year, color, icon, formatCurrency, onClick, showAmount = true, ctaLabel, ctaDescription, ariaLabel, testId, }) => {
144499
- const theme = useTheme$1();
144303
+ const FinanceMetricCard = React$1.memo(({ title, value, color, icon, formatCurrency, onClick, ctaLabel = "Ver lista", ariaLabel, testId, }) => {
144500
144304
  const handleKeyDown = (e) => {
144501
144305
  if (!onClick)
144502
144306
  return;
@@ -144507,17 +144311,26 @@ const FinanceMetricCard = React$1.memo(({ title, value, month, year, color, icon
144507
144311
  };
144508
144312
  return (React$1.createElement(Card$1, { "data-testid": testId, onClick: onClick, onKeyDown: handleKeyDown, role: onClick ? "button" : undefined, tabIndex: onClick ? 0 : undefined, "aria-label": onClick ? ariaLabel : undefined, sx: {
144509
144313
  borderRadius: RADIUS.default,
144510
- boxShadow: theme.shadows[2],
144314
+ boxShadow: "none",
144315
+ border: 1,
144316
+ borderColor: "divider",
144511
144317
  height: "100%",
144512
144318
  cursor: onClick ? "pointer" : "default",
144513
- // subtle hover elevation when clickable
144514
- "&:hover": onClick ? { boxShadow: theme.shadows[4] } : undefined,
144515
144319
  outline: "none",
144320
+ "&:hover": onClick
144321
+ ? { borderColor: "primary.main", boxShadow: "none" }
144322
+ : undefined,
144323
+ "&:focus-visible": {
144324
+ outline: "2px solid",
144325
+ outlineColor: "primary.main",
144326
+ outlineOffset: 2,
144327
+ },
144516
144328
  } },
144517
144329
  React$1.createElement(CardContent$1, { sx: LIST_CARD_CONTENT_SX },
144518
144330
  React$1.createElement(Box$1, { sx: {
144519
144331
  display: "flex",
144520
144332
  justifyContent: "space-between",
144333
+ alignItems: "flex-start",
144521
144334
  } },
144522
144335
  React$1.createElement(Box$1, { sx: { display: "flex", alignItems: "center", mb: 1 } },
144523
144336
  icon,
@@ -144525,24 +144338,13 @@ const FinanceMetricCard = React$1.memo(({ title, value, month, year, color, icon
144525
144338
  fontWeight: 600,
144526
144339
  ml: 1,
144527
144340
  } }, title)),
144528
- React$1.createElement(Typography$1, { variant: "body2", sx: {
144529
- fontWeight: 100,
144530
- ml: 1,
144531
- } }, showAmount
144532
- ? `${month}/${year}`
144533
- : ctaLabel || (onClick ? "Ver lista" : ""))),
144534
- showAmount ? (React$1.createElement(Typography$1, { variant: "h6", sx: {
144341
+ onClick ? (React$1.createElement(ChevronRight$2, { sx: { color, fontSize: 20 }, "aria-hidden": "true" })) : null),
144342
+ React$1.createElement(Typography$1, { variant: "h6", sx: {
144535
144343
  color: color,
144536
144344
  fontWeight: 600,
144537
144345
  fontSize: { xs: "1rem", sm: "1.25rem" },
144538
- } }, formatCurrency(value))) : (React$1.createElement(Box$1, { sx: {
144539
- display: "flex",
144540
- justifyContent: "space-between",
144541
- alignItems: "center",
144542
- mt: 0.5,
144543
- } },
144544
- React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: { fontWeight: 500 } }, ctaDescription || "Abrir lista"),
144545
- React$1.createElement(ChevronRight$2, { sx: { color: color, fontSize: 20 }, "aria-hidden": "true" }))))));
144346
+ } }, formatCurrency(value)),
144347
+ onClick ? (React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: { fontWeight: 500, mt: 0.5 } }, ctaLabel)) : null)));
144546
144348
  });
144547
144349
  FinanceMetricCard.displayName = "FinanceMetricCard";
144548
144350
  const FinancialAccountsList = (props) => {
@@ -144550,7 +144352,6 @@ const FinancialAccountsList = (props) => {
144550
144352
  const theme = useTheme$1();
144551
144353
  const { data, fns } = useFinancialAccountsList(props);
144552
144354
  const isMobile = useMediaQuery(theme.breakpoints.down("sm"));
144553
- const hasOverviewData = Boolean(props.financialOverview) && !props.isOverviewLoading;
144554
144355
  const showPeriodFilter = (_a = props.showPeriodFilter) !== null && _a !== void 0 ? _a : Boolean(props.periodLabel ||
144555
144356
  props.periodInputValue ||
144556
144357
  props.onPeriodInputChange ||
@@ -144568,25 +144369,23 @@ const FinancialAccountsList = (props) => {
144568
144369
  } },
144569
144370
  React$1.createElement(PageHeader$2, { title: "Financeiro", onBack: props.onBack, onAdd: props.onAddAccount, addLabel: "Adicionar", showAddButton: true, hideAddButtonOnMobile: true }),
144570
144371
  React$1.createElement(Container$1, { maxWidth: "md", sx: PAGE_LIST_CONTAINER_SPACING },
144571
- showPeriodFilter && (React$1.createElement(Stack$1, { direction: { xs: "column", sm: "row" }, spacing: SECTION_GAP, alignItems: { xs: "flex-start", sm: "center" }, justifyContent: "space-between", sx: { pb: LIST_CONTROLS_MARGIN_BOTTOM } },
144572
- React$1.createElement(Stack$1, { spacing: 0.5 },
144573
- React$1.createElement(Typography$1, { variant: "subtitle2", color: "text.secondary" }, "Compet\u00EAncia"),
144574
- React$1.createElement(Typography$1, { variant: "body2", sx: { textTransform: "capitalize" } }, props.periodLabel || "-")),
144575
- React$1.createElement(Stack$1, { direction: "row", spacing: 1, alignItems: "center" },
144372
+ showPeriodFilter && (React$1.createElement(Stack$1, { spacing: 1, sx: { pb: LIST_CONTROLS_MARGIN_BOTTOM } },
144373
+ React$1.createElement(Stack$1, { direction: "row", spacing: 1, alignItems: "center", flexWrap: "wrap" },
144576
144374
  React$1.createElement(LabeledMonthPicker, { label: "Selecionar m\u00EAs", value: props.periodInputValue || "", onChange: (value) => { var _a; return (_a = props.onPeriodInputChange) === null || _a === void 0 ? void 0 : _a.call(props, value); }, minMonth: props.periodInputMin || "2000-01", maxMonth: props.periodInputMax || "2100-12", "data-testid": "financial-period-input" }),
144577
144375
  React$1.createElement(Button$1, { variant: "text", onClick: props.onResetToCurrentPeriod, "data-testid": "financial-period-current-month-button" }, "M\u00EAs atual"),
144578
144376
  props.canExportFinancialReport &&
144579
144377
  props.onExportFinancialReport && (React$1.createElement(Button$1, { variant: "outlined", onClick: props.onExportFinancialReport, disabled: props.isExportingFinancialReport, "data-testid": "financial-report-export-button" }, props.isExportingFinancialReport
144580
144378
  ? "Exportando..."
144581
- : "Exportar CSV"))))),
144379
+ : "Exportar CSV"))),
144380
+ props.financialReportExportError ? (React$1.createElement(Alert$1, { severity: "error", "data-testid": "financial-report-export-error" }, props.financialReportExportError)) : null)),
144582
144381
  React$1.createElement(Box$1, { sx: { mb: SECTION_GAP } },
144583
144382
  (props.financialOverview || props.isOverviewLoading) && (React$1.createElement(Box$1, { sx: { mb: LIST_CONTROLS_MARGIN_BOTTOM } },
144584
144383
  React$1.createElement(FinancialOverviewCard, { data: props.financialOverview, isLoading: props.isOverviewLoading, formatCurrency: data.formatCurrency, defaultExpanded: props.financialOverviewExpanded, showMemberPayments: Boolean(props.isTerreiro) }))),
144585
144384
  React$1.createElement(Grid$1, { container: true, spacing: GRID_GAP, sx: { mb: LIST_CONTROLS_MARGIN_BOTTOM } },
144586
144385
  React$1.createElement(Grid$1, { item: true, xs: 6 },
144587
- React$1.createElement(FinanceMetricCard, { title: "Entrada", value: data.income.totalAmount || 0, month: data.income.month, year: data.income.year, color: theme.palette.success.main, icon: React$1.createElement(TrendingUp$1, { sx: { color: theme.palette.success.main } }), formatCurrency: data.formatCurrency, onClick: props.onClickIncome, showAmount: !hasOverviewData, ctaLabel: "Ver lista", ctaDescription: "Ir para lista de entradas", ariaLabel: "Ver lista de entradas", testId: "financial-income-metric-card" })),
144386
+ React$1.createElement(FinanceMetricCard, { title: "Entrada", value: data.income.totalAmount || 0, color: theme.palette.success.main, icon: React$1.createElement(TrendingUp$1, { sx: { color: theme.palette.success.main } }), formatCurrency: data.formatCurrency, onClick: props.onClickIncome, ctaLabel: "Ver lista", ariaLabel: "Ver lista de entradas", testId: "financial-income-metric-card" })),
144588
144387
  React$1.createElement(Grid$1, { item: true, xs: 6 },
144589
- React$1.createElement(FinanceMetricCard, { title: "Sa\u00EDda", value: data.outcome.totalAmount || 0, month: data.outcome.month, year: data.outcome.year, color: theme.palette.error.main, icon: React$1.createElement(TrendingDownIcon, { sx: { color: theme.palette.error.main } }), formatCurrency: data.formatCurrency, onClick: props.onClickOutcome, showAmount: !hasOverviewData, ctaLabel: "Ver lista", ctaDescription: "Ir para lista de sa\u00EDdas", ariaLabel: "Ver lista de sa\u00EDdas", testId: "financial-outcome-metric-card" }))),
144388
+ React$1.createElement(FinanceMetricCard, { title: "Sa\u00EDda", value: data.outcome.totalAmount || 0, color: theme.palette.error.main, icon: React$1.createElement(TrendingDownIcon, { sx: { color: theme.palette.error.main } }), formatCurrency: data.formatCurrency, onClick: props.onClickOutcome, ctaLabel: "Ver lista", ariaLabel: "Ver lista de sa\u00EDdas", testId: "financial-outcome-metric-card" }))),
144590
144389
  props.isTerreiro && (React$1.createElement(MonthlyFeeCard, { formatCurrency: data.formatCurrency, monthlyFee: data.monthlyFee || 0, dueDay: data.monthlyFeeDueDay !== undefined
144591
144390
  ? String(data.monthlyFeeDueDay)
144592
144391
  : "-", paymentMethod: data.monthlyFeePaymentMethod !== undefined
@@ -152661,7 +152460,139 @@ const isDefaultHomeWidgetOrder = (order, profile) => {
152661
152460
  };
152662
152461
  const mergeHomeWidgetVisibility = (partial) => (Object.assign(Object.assign({}, DEFAULT_HOME_WIDGET_VISIBILITY), (partial !== null && partial !== void 0 ? partial : {})));
152663
152462
 
152664
- enumType(["root", "visibility", "order"]);
152463
+ /** Funcionalidade ids used as the untouched defaults for each profile. */
152464
+ const BOTTOM_NAV_ACTION_EVENTS = "events";
152465
+ const BOTTOM_NAV_ACTION_ACTIVITIES = "activities";
152466
+ const BOTTOM_NAV_ACTION_SOCIAL = "social";
152467
+ const BOTTOM_NAV_ACTION_RITUAL_BATHS = "ritual-baths";
152468
+ enumType(["leading", "trailing"]);
152469
+ const HomeBottomNavShortcutsSchema = objectType({
152470
+ leading: stringType().min(1),
152471
+ trailing: stringType().min(1),
152472
+ });
152473
+ const HomeBottomNavProfileKindSchema = enumType(["personal", "terreiro"]);
152474
+ const ATALHOS_DA_BARRA_TITLE = "Atalhos da barra";
152475
+ const ATALHOS_DA_BARRA_ROW_TITLE = "Escolher atalhos";
152476
+ const ATALHOS_DA_BARRA_SECTION_DESCRIPTION = "Troque os dois atalhos ao lado do logo por outras Funcionalidades. Home, o logo e Menu não mudam, e a escolha vale só para este perfil.";
152477
+ const ATALHOS_DA_BARRA_ONLY_TWO_TEXT = "Somente estes dois atalhos podem ser alterados. Home, o logo (troca de perfil) e Menu permanecem fixos.";
152478
+ const ATALHOS_DA_BARRA_FROM_FUNCIONALIDADES_TEXT = "A lista é a de Funcionalidades deste perfil.";
152479
+ const ATALHOS_DA_BARRA_PERSONAL_SCOPE_TEXT = "Esta escolha fica só no perfil pessoal. Cada terreiro guarda a sua, separada.";
152480
+ const atalhosDaBarraTerreiroScopeText = (terreiroName) => `Esta escolha fica só em ${terreiroName}. O perfil pessoal e os outros terreiros não são alterados.`;
152481
+ const ATALHOS_DA_BARRA_LEADING_LABEL = "Esquerda";
152482
+ const ATALHOS_DA_BARRA_TRAILING_LABEL = "Direita";
152483
+ const ATALHOS_DA_BARRA_USED_ELSEWHERE = "Usado no outro atalho";
152484
+ const RESTAURAR_ATALHOS_PADRAO_LABEL = "Restaurar padrão";
152485
+ const BOTTOM_NAV_PROFILE_PERSONAL_LABEL = "Perfil pessoal";
152486
+ const SYNTHETIC_ACTIONS = {
152487
+ [BOTTOM_NAV_ACTION_EVENTS]: {
152488
+ id: BOTTOM_NAV_ACTION_EVENTS,
152489
+ title: "Eventos",
152490
+ route: "/events",
152491
+ icon: "📅",
152492
+ },
152493
+ [BOTTOM_NAV_ACTION_ACTIVITIES]: {
152494
+ id: BOTTOM_NAV_ACTION_ACTIVITIES,
152495
+ title: "Atividades",
152496
+ route: "/activities",
152497
+ icon: "📋",
152498
+ },
152499
+ [BOTTOM_NAV_ACTION_SOCIAL]: {
152500
+ id: BOTTOM_NAV_ACTION_SOCIAL,
152501
+ title: "Social",
152502
+ route: "/social",
152503
+ icon: "🌐",
152504
+ },
152505
+ [BOTTOM_NAV_ACTION_RITUAL_BATHS]: {
152506
+ id: BOTTOM_NAV_ACTION_RITUAL_BATHS,
152507
+ title: "Banhos",
152508
+ route: "/ritual-baths",
152509
+ icon: "🧘",
152510
+ },
152511
+ };
152512
+ /**
152513
+ * The events Funcionalidade is titled "Giras" in the menu.
152514
+ * The bar keeps the established short label "Eventos".
152515
+ */
152516
+ const bottomNavLabelForAction = (action) => action.id === BOTTOM_NAV_ACTION_EVENTS ? "Eventos" : action.title;
152517
+ const getDefaultBottomNavShortcuts = (input) => {
152518
+ if (input.hasTerreiroContext) {
152519
+ return {
152520
+ leading: BOTTOM_NAV_ACTION_EVENTS,
152521
+ trailing: BOTTOM_NAV_ACTION_ACTIVITIES,
152522
+ };
152523
+ }
152524
+ if (input.canUseSocial) {
152525
+ return {
152526
+ leading: BOTTOM_NAV_ACTION_SOCIAL,
152527
+ trailing: BOTTOM_NAV_ACTION_ACTIVITIES,
152528
+ };
152529
+ }
152530
+ return {
152531
+ leading: BOTTOM_NAV_ACTION_RITUAL_BATHS,
152532
+ trailing: BOTTOM_NAV_ACTION_ACTIVITIES,
152533
+ };
152534
+ };
152535
+ const toShortcutAction = (action) => ({
152536
+ id: action.id,
152537
+ label: bottomNavLabelForAction(action),
152538
+ route: action.route,
152539
+ icon: action.icon,
152540
+ badge: action.badge,
152541
+ });
152542
+ const findAction = (actions, id) => {
152543
+ if (!id)
152544
+ return undefined;
152545
+ return actions.find((action) => action.id === id);
152546
+ };
152547
+ /**
152548
+ * Maps stored ids onto the current Funcionalidades.
152549
+ * A missing id falls back to that profile's default. The two slots never share an id.
152550
+ */
152551
+ const resolveBottomNavShortcuts = (input) => {
152552
+ var _a, _b, _c;
152553
+ const defaults = getDefaultBottomNavShortcuts(input);
152554
+ const availableIds = input.actions.map((action) => action.id);
152555
+ const available = new Set(availableIds);
152556
+ const pickId = (preferred, fallback, blocked) => {
152557
+ const candidates = [preferred, fallback, ...availableIds];
152558
+ for (const id of candidates) {
152559
+ if (!id || id === blocked)
152560
+ continue;
152561
+ if (available.size === 0 || available.has(id))
152562
+ return id;
152563
+ }
152564
+ return fallback;
152565
+ };
152566
+ const leadingId = pickId((_a = input.shortcuts) === null || _a === void 0 ? void 0 : _a.leading, defaults.leading);
152567
+ let trailingId = pickId((_b = input.shortcuts) === null || _b === void 0 ? void 0 : _b.trailing, defaults.trailing, leadingId);
152568
+ if (trailingId === leadingId) {
152569
+ trailingId = pickId(defaults.trailing === leadingId ? undefined : defaults.trailing, (_c = availableIds.find((id) => id !== leadingId)) !== null && _c !== void 0 ? _c : defaults.trailing, leadingId);
152570
+ }
152571
+ const resolveOne = (id) => {
152572
+ var _a;
152573
+ const match = (_a = findAction(input.actions, id)) !== null && _a !== void 0 ? _a : SYNTHETIC_ACTIONS[id];
152574
+ if (match)
152575
+ return toShortcutAction(match);
152576
+ return {
152577
+ id,
152578
+ label: id,
152579
+ route: "/",
152580
+ };
152581
+ };
152582
+ const leading = resolveOne(leadingId);
152583
+ const trailing = resolveOne(trailingId);
152584
+ const shortcuts = { leading: leading.id, trailing: trailing.id };
152585
+ const isDefault = shortcuts.leading === defaults.leading &&
152586
+ shortcuts.trailing === defaults.trailing;
152587
+ return { leading, trailing, shortcuts, defaults, isDefault };
152588
+ };
152589
+
152590
+ enumType([
152591
+ "root",
152592
+ "visibility",
152593
+ "order",
152594
+ "shortcuts",
152595
+ ]);
152665
152596
  objectType({
152666
152597
  open: booleanType(),
152667
152598
  onClose: functionType(tupleType([]), voidType()),
@@ -152697,6 +152628,19 @@ objectType({
152697
152628
  */
152698
152629
  onWidgetsCustomizeViewOpen: functionType(tupleType([HomeWidgetsCustomizeViewSchema]), voidType())
152699
152630
  .optional(),
152631
+ /**
152632
+ * Resolved leading/trailing Funcionalidade ids for the active profile.
152633
+ * Shown in Atalhos da barra. Omitted with onBottomNavShortcutChange hides the section.
152634
+ */
152635
+ bottomNavShortcuts: HomeBottomNavShortcutsSchema.optional(),
152636
+ /** Profile defaults used by Restaurar padrão. */
152637
+ defaultBottomNavShortcuts: HomeBottomNavShortcutsSchema.optional(),
152638
+ onBottomNavShortcutChange: functionType(tupleType([HomeBottomNavShortcutsSchema]), voidType())
152639
+ .optional(),
152640
+ /** personal vs the selected terreiro — copy explains the choice is not shared. */
152641
+ bottomNavProfileKind: HomeBottomNavProfileKindSchema.optional(),
152642
+ /** Terreiro name, or "Perfil pessoal". */
152643
+ bottomNavProfileLabel: stringType().min(1).optional(),
152700
152644
  });
152701
152645
  const FUNCIONALIDADES_SECTION_DESCRIPTION = "Atalhos para as principais áreas e ações do terreiro.";
152702
152646
  const WIDGETS_SECTION_DESCRIPTION = "Personalize quais widgets aparecem na tela inicial e em que ordem.";
@@ -152735,6 +152679,9 @@ const useHomeMenu = (props) => {
152735
152679
  setView("order");
152736
152680
  (_a = props.onWidgetsCustomizeViewOpen) === null || _a === void 0 ? void 0 : _a.call(props, "order");
152737
152681
  }, [props]);
152682
+ const handleOpenShortcuts = React$1.useCallback(() => {
152683
+ setView("shortcuts");
152684
+ }, []);
152738
152685
  const handleActionClick = React$1.useCallback((route) => {
152739
152686
  props.onActionClick(route);
152740
152687
  props.onClose();
@@ -152807,6 +152754,36 @@ const useHomeMenu = (props) => {
152807
152754
  const meta = { method: "reset" };
152808
152755
  props.onWidgetOrderChange([...defaultWidgetOrder], meta);
152809
152756
  }, [props, currentOrder, defaultWidgetOrder]);
152757
+ const bottomNavShortcuts = props.bottomNavShortcuts;
152758
+ const defaultBottomNavShortcuts = props.defaultBottomNavShortcuts;
152759
+ const isDefaultBottomNavShortcuts = React$1.useMemo(() => {
152760
+ if (!bottomNavShortcuts || !defaultBottomNavShortcuts)
152761
+ return true;
152762
+ return (bottomNavShortcuts.leading === defaultBottomNavShortcuts.leading &&
152763
+ bottomNavShortcuts.trailing === defaultBottomNavShortcuts.trailing);
152764
+ }, [bottomNavShortcuts, defaultBottomNavShortcuts]);
152765
+ const handleBottomNavShortcutChange = React$1.useCallback((slot, actionId) => {
152766
+ if (!props.onBottomNavShortcutChange || !bottomNavShortcuts)
152767
+ return;
152768
+ if (bottomNavShortcuts[slot] === actionId)
152769
+ return;
152770
+ const next = Object.assign(Object.assign({}, bottomNavShortcuts), { [slot]: actionId });
152771
+ if (next.leading === next.trailing)
152772
+ return;
152773
+ props.onBottomNavShortcutChange(next);
152774
+ }, [props, bottomNavShortcuts]);
152775
+ const handleBottomNavShortcutReset = React$1.useCallback(() => {
152776
+ if (!props.onBottomNavShortcutChange ||
152777
+ !defaultBottomNavShortcuts ||
152778
+ isDefaultBottomNavShortcuts) {
152779
+ return;
152780
+ }
152781
+ props.onBottomNavShortcutChange(Object.assign({}, defaultBottomNavShortcuts));
152782
+ }, [
152783
+ props,
152784
+ defaultBottomNavShortcuts,
152785
+ isDefaultBottomNavShortcuts,
152786
+ ]);
152810
152787
  const widgets = React$1.useMemo(() => {
152811
152788
  if (props.showQuickActions === undefined) {
152812
152789
  return props.widgets;
@@ -152828,17 +152805,25 @@ const useHomeMenu = (props) => {
152828
152805
  return widgets.filter((widget) => widget.id !== "quickActions");
152829
152806
  }, [props.reorderableWidgets, props.widgetOrder, widgets]);
152830
152807
  const showQuickActions = (_e = (_c = props.showQuickActions) !== null && _c !== void 0 ? _c : (_d = widgets.find((widget) => widget.id === "quickActions")) === null || _d === void 0 ? void 0 : _d.visible) !== null && _e !== void 0 ? _e : true;
152831
- const data = React$1.useMemo(() => ({
152832
- open: props.open,
152833
- actions: props.actions,
152834
- widgets,
152835
- reorderableWidgets,
152836
- showQuickActions,
152837
- view,
152838
- canReorder,
152839
- isDefaultOrder,
152840
- defaultWidgetOrder,
152841
- }), [
152808
+ const data = React$1.useMemo(() => {
152809
+ var _a;
152810
+ return ({
152811
+ open: props.open,
152812
+ actions: props.actions,
152813
+ widgets,
152814
+ reorderableWidgets,
152815
+ showQuickActions,
152816
+ view,
152817
+ canReorder,
152818
+ isDefaultOrder,
152819
+ defaultWidgetOrder,
152820
+ canCustomizeBottomNav: props.onBottomNavShortcutChange !== undefined && props.actions.length > 0,
152821
+ bottomNavShortcuts,
152822
+ isDefaultBottomNavShortcuts,
152823
+ bottomNavProfileKind: (_a = props.bottomNavProfileKind) !== null && _a !== void 0 ? _a : "personal",
152824
+ bottomNavProfileLabel: props.bottomNavProfileLabel,
152825
+ });
152826
+ }, [
152842
152827
  props.open,
152843
152828
  props.actions,
152844
152829
  widgets,
@@ -152848,33 +152833,110 @@ const useHomeMenu = (props) => {
152848
152833
  canReorder,
152849
152834
  isDefaultOrder,
152850
152835
  defaultWidgetOrder,
152836
+ props.onBottomNavShortcutChange,
152837
+ bottomNavShortcuts,
152838
+ isDefaultBottomNavShortcuts,
152839
+ props.bottomNavProfileKind,
152840
+ props.bottomNavProfileLabel,
152851
152841
  ]);
152852
152842
  const fns = React$1.useMemo(() => ({
152853
152843
  handleClose,
152854
152844
  handleBack,
152855
152845
  handleOpenVisibility,
152856
152846
  handleOpenOrder,
152847
+ handleOpenShortcuts,
152857
152848
  handleActionClick,
152858
152849
  handleWidgetVisibilityChange,
152859
152850
  handleShowQuickActionsChange,
152860
152851
  handleWidgetOrderMove,
152861
152852
  handleWidgetOrderReorder,
152862
152853
  handleWidgetOrderReset,
152854
+ handleBottomNavShortcutChange,
152855
+ handleBottomNavShortcutReset,
152863
152856
  }), [
152864
152857
  handleClose,
152865
152858
  handleBack,
152866
152859
  handleOpenVisibility,
152867
152860
  handleOpenOrder,
152861
+ handleOpenShortcuts,
152868
152862
  handleActionClick,
152869
152863
  handleWidgetVisibilityChange,
152870
152864
  handleShowQuickActionsChange,
152871
152865
  handleWidgetOrderMove,
152872
152866
  handleWidgetOrderReorder,
152873
152867
  handleWidgetOrderReset,
152868
+ handleBottomNavShortcutChange,
152869
+ handleBottomNavShortcutReset,
152874
152870
  ]);
152875
152871
  return { data, fns };
152876
152872
  };
152877
152873
 
152874
+ const sectionDescriptionSx$1 = {
152875
+ fontSize: "0.8125rem",
152876
+ lineHeight: 1.4,
152877
+ mt: 0,
152878
+ mb: 1.5,
152879
+ px: 0.5,
152880
+ };
152881
+ const ShortcutRadioList = ({ slot, label, value, blockedId, actions, onChange }) => {
152882
+ const theme = useTheme$1();
152883
+ return (React$1.createElement(Box$1, { sx: { mb: 2 } },
152884
+ React$1.createElement(Typography$1, { variant: "subtitle2", color: "text.secondary", component: "h2", sx: { fontWeight: 600, fontSize: "0.8125rem", mb: 1, px: 0.5 } }, label),
152885
+ React$1.createElement(RadioGroup$1, { "aria-label": `Atalho da ${label.toLowerCase()}`, value: value, onChange: (_event, next) => onChange(next), sx: {
152886
+ bgcolor: theme.palette.mode === "dark"
152887
+ ? alpha(theme.palette.common.white, 0.08)
152888
+ : alpha(theme.palette.common.black, 0.04),
152889
+ borderRadius: RADIUS.default,
152890
+ overflow: "hidden",
152891
+ } }, actions.map((action, index) => {
152892
+ const usedElsewhere = action.id === blockedId;
152893
+ return (React$1.createElement(React$1.Fragment, { key: action.id },
152894
+ index > 0 && React$1.createElement(Divider$1, { sx: { ml: 2 } }),
152895
+ React$1.createElement(FormControlLabel$1, { value: action.id, disabled: usedElsewhere, "data-testid": `home-bottom-nav-shortcut-${slot}-${action.id}`, control: React$1.createElement(Radio$1, { color: "primary", inputProps: {
152896
+ "aria-label": usedElsewhere
152897
+ ? `${action.title}, ${ATALHOS_DA_BARRA_USED_ELSEWHERE}`
152898
+ : action.title,
152899
+ } }), label: React$1.createElement(Box$1, { sx: { display: "flex", alignItems: "center", gap: 1.5, py: 0.5 } },
152900
+ React$1.createElement(Box$1, { sx: {
152901
+ width: 36,
152902
+ height: 36,
152903
+ borderRadius: RADIUS.default,
152904
+ display: "flex",
152905
+ alignItems: "center",
152906
+ justifyContent: "center",
152907
+ bgcolor: alpha(theme.palette.primary.main, 0.12),
152908
+ color: theme.palette.primary.main,
152909
+ flexShrink: 0,
152910
+ "& .MuiSvgIcon-root": { fontSize: 20 },
152911
+ } }, resolveActionIcon(action.icon)),
152912
+ React$1.createElement(Box$1, { sx: { minWidth: 0 } },
152913
+ React$1.createElement(Typography$1, { variant: "body1", sx: { fontWeight: 500 } }, action.title),
152914
+ usedElsewhere && (React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: { fontSize: "0.8125rem", lineHeight: 1.35 } }, ATALHOS_DA_BARRA_USED_ELSEWHERE)))), sx: {
152915
+ mx: 0,
152916
+ px: 1.5,
152917
+ py: 0.75,
152918
+ minHeight: 48,
152919
+ width: "100%",
152920
+ alignItems: "center",
152921
+ } })));
152922
+ }))));
152923
+ };
152924
+ const HomeMenuShortcuts = ({ actions, shortcuts, profileKind, profileLabel, isDefault, onChange, onReset, }) => {
152925
+ const terreiroName = (profileLabel === null || profileLabel === void 0 ? void 0 : profileLabel.trim()) || "este terreiro";
152926
+ const profileHeading = profileKind === "terreiro" ? terreiroName : BOTTOM_NAV_PROFILE_PERSONAL_LABEL;
152927
+ const scopeText = profileKind === "terreiro"
152928
+ ? atalhosDaBarraTerreiroScopeText(terreiroName)
152929
+ : ATALHOS_DA_BARRA_PERSONAL_SCOPE_TEXT;
152930
+ return (React$1.createElement(Box$1, null,
152931
+ React$1.createElement(Typography$1, { variant: "subtitle1", component: "h2", "data-testid": "home-menu-bottom-nav-profile", sx: { fontWeight: 600, mb: 1 } }, profileHeading),
152932
+ React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: sectionDescriptionSx$1 }, ATALHOS_DA_BARRA_ONLY_TWO_TEXT),
152933
+ React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: Object.assign(Object.assign({}, sectionDescriptionSx$1), { mt: -0.5 }) }, ATALHOS_DA_BARRA_FROM_FUNCIONALIDADES_TEXT),
152934
+ React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", "data-testid": "home-menu-bottom-nav-scope", sx: Object.assign(Object.assign({}, sectionDescriptionSx$1), { mt: -0.5 }) }, scopeText),
152935
+ React$1.createElement(Button$1, { fullWidth: true, variant: "outlined", color: "primary", "data-testid": "home-bottom-nav-shortcuts-reset", "aria-label": RESTAURAR_ATALHOS_PADRAO_LABEL, disabled: isDefault, onClick: onReset, sx: { mb: 2, textTransform: "none", fontWeight: 500 } }, RESTAURAR_ATALHOS_PADRAO_LABEL),
152936
+ React$1.createElement(ShortcutRadioList, { slot: "leading", label: ATALHOS_DA_BARRA_LEADING_LABEL, value: shortcuts.leading, blockedId: shortcuts.trailing, actions: actions, onChange: (actionId) => onChange("leading", actionId) }),
152937
+ React$1.createElement(ShortcutRadioList, { slot: "trailing", label: ATALHOS_DA_BARRA_TRAILING_LABEL, value: shortcuts.trailing, blockedId: shortcuts.leading, actions: actions, onChange: (actionId) => onChange("trailing", actionId) })));
152938
+ };
152939
+
152878
152940
  /** Below HomeBottomNav (appBar 1100) so the Menu tab stays tappable while open. */
152879
152941
  const HOME_MENU_DRAWER_Z_INDEX = 1050;
152880
152942
  const sectionTitleSx$2 = {
@@ -152997,12 +153059,16 @@ const HomeMenu = (props) => {
152997
153059
  ? EXIBIR_WIDGETS_TITLE
152998
153060
  : data.view === "order"
152999
153061
  ? ORDENAR_WIDGETS_TITLE
153000
- : "Opções";
153062
+ : data.view === "shortcuts"
153063
+ ? ATALHOS_DA_BARRA_TITLE
153064
+ : "Opções";
153001
153065
  const dialogLabel = data.view === "visibility"
153002
153066
  ? EXIBIR_WIDGETS_TITLE
153003
153067
  : data.view === "order"
153004
153068
  ? ORDENAR_WIDGETS_TITLE
153005
- : "Menu";
153069
+ : data.view === "shortcuts"
153070
+ ? ATALHOS_DA_BARRA_TITLE
153071
+ : "Menu";
153006
153072
  return (React$1.createElement(GenericDrawer, { open: data.open, onClose: fns.handleClose, fullHeight: true, disableEnforceFocus: true, zIndex: HOME_MENU_DRAWER_Z_INDEX, "aria-label": dialogLabel },
153007
153073
  React$1.createElement(Box$1, { sx: {
153008
153074
  display: "flex",
@@ -153076,6 +153142,24 @@ const HomeMenu = (props) => {
153076
153142
  fontSize: 20,
153077
153143
  } }))));
153078
153144
  }))))),
153145
+ data.canCustomizeBottomNav && data.bottomNavShortcuts && (React$1.createElement(Box$1, { sx: { mb: 2 } },
153146
+ React$1.createElement(Typography$1, { variant: "subtitle2", color: "text.secondary", sx: sectionTitleSx$2 }, ATALHOS_DA_BARRA_TITLE),
153147
+ React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: sectionDescriptionSx }, ATALHOS_DA_BARRA_SECTION_DESCRIPTION),
153148
+ React$1.createElement(Box$1, { sx: {
153149
+ bgcolor: cardBg,
153150
+ borderRadius: RADIUS.default,
153151
+ overflow: "hidden",
153152
+ } },
153153
+ React$1.createElement(List$1, { disablePadding: true },
153154
+ React$1.createElement(ListItemButton$1, { onClick: fns.handleOpenShortcuts, "aria-label": ATALHOS_DA_BARRA_TITLE, "data-testid": "home-menu-bottom-nav-shortcuts", sx: { py: 1.5, px: 2 } },
153155
+ React$1.createElement(ListItemText$1, { primary: ATALHOS_DA_BARRA_ROW_TITLE, secondary: "Somente os dois atalhos ao lado do logo", primaryTypographyProps: { fontWeight: 500 }, secondaryTypographyProps: {
153156
+ fontSize: "0.8125rem",
153157
+ lineHeight: 1.35,
153158
+ } }),
153159
+ React$1.createElement(ChevronRight$2, { sx: {
153160
+ color: theme.palette.text.secondary,
153161
+ fontSize: 20,
153162
+ } })))))),
153079
153163
  data.widgets.length > 0 && (React$1.createElement(Box$1, null,
153080
153164
  React$1.createElement(Typography$1, { variant: "subtitle2", color: "text.secondary", sx: sectionTitleSx$2 }, "Widgets"),
153081
153165
  React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: sectionDescriptionSx }, WIDGETS_SECTION_DESCRIPTION),
@@ -153111,7 +153195,8 @@ const HomeMenu = (props) => {
153111
153195
  data.view === "order" && (React$1.createElement(Box$1, null,
153112
153196
  React$1.createElement(Typography$1, { variant: "body2", color: "text.secondary", sx: Object.assign(Object.assign({}, sectionDescriptionSx), { mt: 0 }) }, ORDENAR_WIDGETS_DESCRIPTION),
153113
153197
  React$1.createElement(Button$1, { fullWidth: true, variant: "outlined", color: "primary", "data-testid": "home-widget-order-reset", "aria-label": RESTAURAR_ORDEM_PADRAO_LABEL, disabled: data.isDefaultOrder, onClick: fns.handleWidgetOrderReset, sx: { mb: 1.5, textTransform: "none", fontWeight: 500 } }, RESTAURAR_ORDEM_PADRAO_LABEL),
153114
- React$1.createElement(HomeMenuOrderList, { widgets: data.reorderableWidgets, cardBg: cardBg, onMove: fns.handleWidgetOrderMove, onReorder: fns.handleWidgetOrderReorder })))))));
153198
+ React$1.createElement(HomeMenuOrderList, { widgets: data.reorderableWidgets, cardBg: cardBg, onMove: fns.handleWidgetOrderMove, onReorder: fns.handleWidgetOrderReorder }))),
153199
+ data.view === "shortcuts" && data.bottomNavShortcuts && (React$1.createElement(HomeMenuShortcuts, { actions: data.actions, shortcuts: data.bottomNavShortcuts, profileKind: data.bottomNavProfileKind, profileLabel: data.bottomNavProfileLabel, isDefault: data.isDefaultBottomNavShortcuts, onChange: fns.handleBottomNavShortcutChange, onReset: fns.handleBottomNavShortcutReset }))))));
153115
153200
  };
153116
153201
  var HomeMenu$1 = React$1.memo(HomeMenu);
153117
153202
 
@@ -153899,11 +153984,37 @@ const SupplyPlanCard = ({ supplyPlanData, isLoadingSupplyPlan = false, onSupplyP
153899
153984
  showCostMissionsTeaser && onSupplyPlanMissions && (React$1.createElement(Button$1, { variant: "text", size: "small", onClick: onSupplyPlanMissions }, "Completar custos")))))));
153900
153985
  };
153901
153986
 
153902
- /** Inner pill height (actions row). */
153903
- const HOME_BOTTOM_NAV_HEIGHT = 52;
153904
153987
  /** Float margin below the pill (before safe-area). */
153905
153988
  const HOME_BOTTOM_NAV_FLOAT_MB = 16;
153906
- const HomeBottomNav = React$1.memo(function HomeBottomNav({ value, onChange, onQuickAction, onMenu, menuOpen = false, onOpenProfileSelector, hasTerreiroContext = true, canUseSocial = false, socialNotificationsUnreadCount = 0, }) {
153989
+ const shortcutBadgeContent = (badge) => {
153990
+ if (badge == null || badge === 0 || badge === "0")
153991
+ return undefined;
153992
+ return badge;
153993
+ };
153994
+ const ShortcutTab = ({ action, onQuickAction }) => {
153995
+ const badge = shortcutBadgeContent(action.badge);
153996
+ const isSocial = action.id === "social";
153997
+ const icon = resolveActionIcon(action.icon);
153998
+ const label = isSocial
153999
+ ? badge != null
154000
+ ? `Social, ${badge} notificações não lidas`
154001
+ : "Social"
154002
+ : action.label;
154003
+ return (React$1.createElement(NotchedBottomBarItem, { label: label, onClick: () => onQuickAction(action.route), "data-testid": isSocial ? "home-bottom-nav-social" : `home-bottom-nav-${action.id}` }, isSocial ? (React$1.createElement(Badge$1, { badgeContent: badge, color: "error", invisible: badge == null, max: 99, "data-testid": "home-bottom-nav-social-badge" }, icon)) : (icon)));
154004
+ };
154005
+ const ProfileLogo = () => {
154006
+ const active = useNotchedSlotActive();
154007
+ return (React$1.createElement(Box$1, { component: "img", src: LogoImg, alt: "", sx: {
154008
+ width: active ? 40 : 22,
154009
+ height: active ? 40 : 22,
154010
+ borderRadius: RADIUS.circle,
154011
+ objectFit: "cover",
154012
+ transition: `width ${ANIMATION_DURATION.slow}ms ${ANIMATION_EASING.spring}, height ${ANIMATION_DURATION.slow}ms ${ANIMATION_EASING.spring}, transform ${ANIMATION_DURATION.fast}ms ${ANIMATION_EASING.spring}`,
154013
+ "&:hover": { transform: "scale(1.04)" },
154014
+ "&:active": { transform: "scale(0.96)" },
154015
+ } }));
154016
+ };
154017
+ const HomeBottomNav = React$1.memo(function HomeBottomNav({ value, onChange, onQuickAction, onMenu, menuOpen = false, onOpenProfileSelector, hasTerreiroContext = true, canUseSocial = false, socialNotificationsUnreadCount = 0, leadingAction, trailingAction, }) {
153907
154018
  const measureRef = useMeasureSlot(HOME_MEASURE_SLOTS.bottomNav);
153908
154019
  const { isScrolling } = useHideOnScroll();
153909
154020
  const [entered, setEntered] = React$1.useState(false);
@@ -153934,66 +154045,50 @@ const HomeBottomNav = React$1.memo(function HomeBottomNav({ value, onChange, onQ
153934
154045
  px: 2,
153935
154046
  mb: `calc(${HOME_BOTTOM_NAV_FLOAT_MB}px + env(safe-area-inset-bottom, 0px))`,
153936
154047
  } },
153937
- React$1.createElement(Box$1, { sx: {
153938
- width: "100%",
153939
- maxWidth: 400,
153940
- borderRadius: RADIUS.pill,
153941
- overflow: "visible",
153942
- bgcolor: (theme) => alpha(theme.palette.background.default, 0.92),
153943
- backdropFilter: "blur(16px)",
153944
- boxShadow: (theme) => theme.palette.mode === "dark"
153945
- ? "0 8px 28px rgba(0,0,0,0.45)"
153946
- : "0 8px 28px rgba(0,0,0,0.12)",
153947
- border: 1,
153948
- borderColor: (theme) => theme.palette.mode === "dark"
153949
- ? "rgba(255,255,255,0.08)"
153950
- : "rgba(0,0,0,0.06)",
153951
- } },
153952
- React$1.createElement(BottomNavigation$1, { showLabels: true, value: value, onChange: (_ev, newValue) => onChange(newValue), "aria-label": "Navega\u00E7\u00E3o principal", sx: {
153953
- height: HOME_BOTTOM_NAV_HEIGHT,
153954
- width: "100%",
153955
- bgcolor: "transparent",
153956
- overflow: "visible",
153957
- "& .MuiBottomNavigationAction-root": {
153958
- color: "text.secondary",
153959
- minWidth: 0,
153960
- flex: 1,
153961
- px: 0.25,
153962
- py: 0.5,
153963
- "&.Mui-selected": { color: "primary.main" },
153964
- },
153965
- "& .MuiBottomNavigationAction-label": {
153966
- fontSize: "0.6rem",
153967
- mt: 0.15,
153968
- "&.Mui-selected": { fontSize: "0.6rem" },
153969
- },
153970
- "& .MuiSvgIcon-root": {
153971
- fontSize: 20,
153972
- },
153973
- } },
153974
- React$1.createElement(BottomNavigationAction$1, { label: "Home", icon: React$1.createElement(Home$1, null), onClick: () => onQuickAction("/") }),
153975
- hasTerreiroContext ? (React$1.createElement(BottomNavigationAction$1, { label: "Eventos", icon: React$1.createElement(CalendarToday, null), onClick: () => onQuickAction("/events") })) : canUseSocial ? (React$1.createElement(BottomNavigationAction$1, { label: "Social", icon: React$1.createElement(Badge$1, { badgeContent: socialBadge, color: "error", invisible: socialBadge == null, max: 99, "data-testid": "home-bottom-nav-social-badge" },
153976
- React$1.createElement(Public, null)), onClick: () => onQuickAction("/social"), "data-testid": "home-bottom-nav-social", "aria-label": socialBadge != null
154048
+ React$1.createElement(Box$1, { sx: { width: "100%", maxWidth: 400 } },
154049
+ React$1.createElement(NotchedBottomBar, { activeIndex: value, "aria-label": "Navega\u00E7\u00E3o principal" },
154050
+ React$1.createElement(NotchedBottomBarItem, { label: "Home", onClick: () => {
154051
+ onChange(0);
154052
+ onQuickAction("/");
154053
+ } },
154054
+ React$1.createElement(Home$1, null)),
154055
+ leadingAction ? (React$1.createElement(ShortcutTab, { action: leadingAction, onQuickAction: (route) => {
154056
+ onChange(1);
154057
+ onQuickAction(route);
154058
+ } })) : hasTerreiroContext ? (React$1.createElement(NotchedBottomBarItem, { label: "Eventos", onClick: () => {
154059
+ onChange(1);
154060
+ onQuickAction("/events");
154061
+ } },
154062
+ React$1.createElement(CalendarToday, null))) : canUseSocial ? (React$1.createElement(NotchedBottomBarItem, { label: socialBadge != null
153977
154063
  ? `Social, ${socialBadge} notificações não lidas`
153978
- : "Social" })) : (React$1.createElement(BottomNavigationAction$1, { label: "Banhos", icon: React$1.createElement(Spa, null), onClick: () => onQuickAction("/ritual-baths") })),
153979
- React$1.createElement(BottomNavigationAction$1, { label: "", "aria-label": "Selecione um perfil", sx: { overflow: "visible" }, icon: React$1.createElement(Box$1, { component: "img", src: LogoImg, alt: "Logo", sx: {
153980
- width: 48,
153981
- height: 48,
153982
- borderRadius: RADIUS.circle,
153983
- objectFit: "cover",
153984
- boxShadow: (theme) => `0 4px 12px ${theme.palette.primary.main}40`,
153985
- transform: "translateY(-6px)",
153986
- transition: `transform ${ANIMATION_DURATION.fast}ms ${ANIMATION_EASING.spring}, box-shadow ${ANIMATION_DURATION.fast}ms ${ANIMATION_EASING.spring}`,
153987
- "&:hover": {
153988
- transform: "translateY(-8px) scale(1.04)",
153989
- boxShadow: (theme) => `0 6px 16px ${theme.palette.primary.main}50`,
153990
- },
153991
- "&:active": {
153992
- transform: "translateY(-4px) scale(0.96)",
153993
- },
153994
- } }), onClick: onOpenProfileSelector }),
153995
- React$1.createElement(BottomNavigationAction$1, { label: "Atividades", icon: React$1.createElement(EventIcon, null), onClick: () => onQuickAction("/activities") }),
153996
- React$1.createElement(BottomNavigationAction$1, { label: "Menu", icon: React$1.createElement(Menu, null), onClick: onMenu, "aria-expanded": menuOpen }))))));
154064
+ : "Social", onClick: () => {
154065
+ onChange(1);
154066
+ onQuickAction("/social");
154067
+ }, "data-testid": "home-bottom-nav-social" },
154068
+ React$1.createElement(Badge$1, { badgeContent: socialBadge, color: "error", invisible: socialBadge == null, max: 99, "data-testid": "home-bottom-nav-social-badge" },
154069
+ React$1.createElement(Public, null)))) : (React$1.createElement(NotchedBottomBarItem, { label: "Banhos", onClick: () => {
154070
+ onChange(1);
154071
+ onQuickAction("/ritual-baths");
154072
+ } },
154073
+ React$1.createElement(Spa, null))),
154074
+ React$1.createElement(NotchedBottomBarItem, { label: "Selecione um perfil", onClick: () => {
154075
+ onChange(2);
154076
+ onOpenProfileSelector();
154077
+ } },
154078
+ React$1.createElement(ProfileLogo, null)),
154079
+ trailingAction ? (React$1.createElement(ShortcutTab, { action: trailingAction, onQuickAction: (route) => {
154080
+ onChange(3);
154081
+ onQuickAction(route);
154082
+ } })) : (React$1.createElement(NotchedBottomBarItem, { label: "Atividades", onClick: () => {
154083
+ onChange(3);
154084
+ onQuickAction("/activities");
154085
+ } },
154086
+ React$1.createElement(EventIcon, null))),
154087
+ React$1.createElement(NotchedBottomBarItem, { label: "Menu", onClick: () => {
154088
+ onChange(4);
154089
+ onMenu();
154090
+ }, "aria-expanded": menuOpen },
154091
+ React$1.createElement(Menu, null)))))));
153997
154092
  });
153998
154093
 
153999
154094
  const ProfileSelectorDrawer = ({ open, onClose, terreiros, selectedTerreiroIdx, onTerreiroSelect, inviteShareUrl, snackbarOpen, snackbarMsg, onSnackbarClose, }) => {
@@ -156334,7 +156429,7 @@ const resolveIsPersonalProfile = (args) => {
156334
156429
  return (_a = args.isPersonalProfile) !== null && _a !== void 0 ? _a : args.selectedTerreiro === null;
156335
156430
  };
156336
156431
  const HomePage = (props) => {
156337
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
156432
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
156338
156433
  const theme = useTheme$1();
156339
156434
  const { data, fns } = useHomePage(props);
156340
156435
  const [drawerOpen, setDrawerOpen] = React$1.useState(false);
@@ -156353,9 +156448,37 @@ const HomePage = (props) => {
156353
156448
  isPersonalProfile: props.isPersonalProfile,
156354
156449
  });
156355
156450
  }, [props.terreiros, data === null || data === void 0 ? void 0 : data.selectedTerreiro, props.isPersonalProfile]);
156451
+ const hasTerreiroContext = Boolean((_c = data === null || data === void 0 ? void 0 : data.selectedTerreiro) === null || _c === void 0 ? void 0 : _c.id);
156452
+ const bottomNavScopeKey = (_e = (_d = data === null || data === void 0 ? void 0 : data.selectedTerreiro) === null || _d === void 0 ? void 0 : _d.id) !== null && _e !== void 0 ? _e : "personal";
156453
+ const shortcutsControlled = props.onBottomNavShortcutChange !== undefined;
156454
+ const [localBottomNavShortcuts, setLocalBottomNavShortcuts] = React$1.useState({});
156455
+ const requestedBottomNavShortcuts = shortcutsControlled
156456
+ ? props.bottomNavShortcuts
156457
+ : localBottomNavShortcuts[bottomNavScopeKey];
156458
+ const bottomNavResolved = React$1.useMemo(() => {
156459
+ var _a;
156460
+ return resolveBottomNavShortcuts({
156461
+ shortcuts: requestedBottomNavShortcuts,
156462
+ actions: ((_a = data === null || data === void 0 ? void 0 : data.quickActions) !== null && _a !== void 0 ? _a : []),
156463
+ hasTerreiroContext,
156464
+ canUseSocial: Boolean(props.canUseSocial),
156465
+ });
156466
+ }, [
156467
+ requestedBottomNavShortcuts,
156468
+ data === null || data === void 0 ? void 0 : data.quickActions,
156469
+ hasTerreiroContext,
156470
+ props.canUseSocial,
156471
+ ]);
156472
+ const handleBottomNavShortcutChange = React$1.useCallback((next) => {
156473
+ var _a;
156474
+ if (!shortcutsControlled) {
156475
+ setLocalBottomNavShortcuts((current) => (Object.assign(Object.assign({}, current), { [bottomNavScopeKey]: next })));
156476
+ }
156477
+ (_a = props.onBottomNavShortcutChange) === null || _a === void 0 ? void 0 : _a.call(props, next);
156478
+ }, [shortcutsControlled, bottomNavScopeKey, props]);
156356
156479
  const profileSelector = useProfileSelector({
156357
- terreiros: (_c = props.terreiros) !== null && _c !== void 0 ? _c : [],
156358
- selectedTerreiroIdx: (_d = data === null || data === void 0 ? void 0 : data.selectedTerreiroIdx) !== null && _d !== void 0 ? _d : 0,
156480
+ terreiros: (_f = props.terreiros) !== null && _f !== void 0 ? _f : [],
156481
+ selectedTerreiroIdx: (_g = data === null || data === void 0 ? void 0 : data.selectedTerreiroIdx) !== null && _g !== void 0 ? _g : 0,
156359
156482
  onTerreiroChange: (terreiro, idx) => {
156360
156483
  fns === null || fns === void 0 ? void 0 : fns.handleTerreiroChange(terreiro, idx);
156361
156484
  },
@@ -156432,7 +156555,7 @@ const HomePage = (props) => {
156432
156555
  (Boolean(props.terreiroCompletenessData) ||
156433
156556
  Boolean(props.isLoadingTerreiroCompleteness));
156434
156557
  const showGamification = visibleWidgets.gamification && props.showGamificationCard !== false;
156435
- const widgetOrder = (_e = data.widgetOrder) !== null && _e !== void 0 ? _e : DEFAULT_HOME_WIDGET_ORDER;
156558
+ const widgetOrder = (_h = data.widgetOrder) !== null && _h !== void 0 ? _h : DEFAULT_HOME_WIDGET_ORDER;
156436
156559
  const showMoonPhaseContent = visibleWidgets.moonPhase &&
156437
156560
  (Boolean(props.moonData) || Boolean(props.isLoadingMoonData));
156438
156561
  const showDailyRitualsContent = visibleWidgets.dailyRituals &&
@@ -156484,12 +156607,12 @@ const HomePage = (props) => {
156484
156607
  color: theme.palette.text.primary,
156485
156608
  position: "relative",
156486
156609
  } },
156487
- React$1.createElement(TopBar, { user: data.user, terreiros: (_f = props.terreiros) !== null && _f !== void 0 ? _f : [], greeting: data.greeting, onProfileClick: fns.handleProfileClick, onTerreiroAvatarClick: () => profileSelector.fns.openProfileDrawer("top_bar_avatar"), onOpenDrawer: () => setDrawerOpen(true), onSettings: fns.handleSettingsClick, onOnboardingInfoClick: props.onOnboardingInfoClick, onboardingInfoIcon: props.onboardingInfoIcon, inviteShareUrl: props.inviteShareUrl, onTerreiroChange: (terreiro) => {
156610
+ React$1.createElement(TopBar, { user: data.user, terreiros: (_j = props.terreiros) !== null && _j !== void 0 ? _j : [], greeting: data.greeting, onProfileClick: fns.handleProfileClick, onTerreiroAvatarClick: () => profileSelector.fns.openProfileDrawer("top_bar_avatar"), onOpenDrawer: () => setDrawerOpen(true), onSettings: fns.handleSettingsClick, onOnboardingInfoClick: props.onOnboardingInfoClick, onboardingInfoIcon: props.onboardingInfoIcon, inviteShareUrl: props.inviteShareUrl, onTerreiroChange: (terreiro) => {
156488
156611
  const idx = Array.isArray(props.terreiros)
156489
156612
  ? props.terreiros.findIndex((t) => t === terreiro)
156490
156613
  : 0;
156491
156614
  fns.handleTerreiroChange(terreiro, idx);
156492
- }, selectedTerreiroIdx: data.selectedTerreiroIdx, quickActions: data.quickActions, onQuickActionClick: fns.handleQuickActionClick, showQuickActions: showQuickActions, onLayoutChange: handleLayoutChange, badgeTier: (_g = props.profileCompletenessData) === null || _g === void 0 ? void 0 : _g.badgeTier, onNotificationClick: isActivePersonalProfile ? undefined : props.onNotificationClick, notificationCount: isActivePersonalProfile ? undefined : props.notificationCount, notificationItems: isActivePersonalProfile ? undefined : props.notificationItems, onViewAllNotifications: isActivePersonalProfile ? undefined : props.onViewAllNotifications }),
156615
+ }, selectedTerreiroIdx: data.selectedTerreiroIdx, quickActions: data.quickActions, onQuickActionClick: fns.handleQuickActionClick, showQuickActions: showQuickActions, onLayoutChange: handleLayoutChange, badgeTier: (_k = props.profileCompletenessData) === null || _k === void 0 ? void 0 : _k.badgeTier, onNotificationClick: isActivePersonalProfile ? undefined : props.onNotificationClick, notificationCount: isActivePersonalProfile ? undefined : props.notificationCount, notificationItems: isActivePersonalProfile ? undefined : props.notificationItems, onViewAllNotifications: isActivePersonalProfile ? undefined : props.onViewAllNotifications }),
156493
156616
  React$1.createElement(Container$1, { maxWidth: "md", sx: {
156494
156617
  px: PAGE_LIST_CONTAINER_SPACING.px,
156495
156618
  } },
@@ -156498,8 +156621,8 @@ const HomePage = (props) => {
156498
156621
  React$1.createElement(MediumStatusAlert, { mediumStatus: data.mediumStatus, showApprovedAlert: showApprovedAlert, onShowApprovedAlert: handleShowApprovedAlert, setShowRejectedDialog: setShowRejectedDialog }))),
156499
156622
  React$1.createElement(RejectionReasonDialog$1, { open: !!showRejectedDialog, rejectionMessage: data.rejectionMessage, onClose: handleShowRejectedDialog }),
156500
156623
  widgetOrder.map((id) => renderHomeWidget(id)))),
156501
- React$1.createElement(HomeBottomNav, { value: bottomNavValue, onChange: setBottomNavValue, onQuickAction: handleBottomQuickAction, onMenu: handleToggleMenu, menuOpen: menuOpen, onOpenProfileSelector: () => profileSelector.fns.openProfileDrawer("bottom_nav_logo"), hasTerreiroContext: !!((_h = data.selectedTerreiro) === null || _h === void 0 ? void 0 : _h.id), canUseSocial: Boolean(props.canUseSocial), socialNotificationsUnreadCount: (_j = props.socialNotificationsUnreadCount) !== null && _j !== void 0 ? _j : 0 }),
156502
- React$1.createElement(HomeMenu$1, { open: menuOpen, onClose: handleCloseMenu, actions: data.quickActions, onActionClick: fns.handleQuickActionClick, widgets: (_k = data.menuWidgets) !== null && _k !== void 0 ? _k : [], onWidgetVisibilityChange: (_l = fns.handleHomeWidgetVisibilityChange) !== null && _l !== void 0 ? _l : (() => undefined), showQuickActions: showQuickActions, onShowQuickActionsChange: (_m = fns.handleShowQuickActionsChange) !== null && _m !== void 0 ? _m : (() => undefined), widgetOrder: widgetOrder, reorderableWidgets: (_o = data.reorderableWidgets) !== null && _o !== void 0 ? _o : [], defaultWidgetOrder: (_p = data.defaultWidgetOrder) !== null && _p !== void 0 ? _p : [], onWidgetOrderChange: (_q = fns.handleHomeWidgetOrderChange) !== null && _q !== void 0 ? _q : (() => undefined), onWidgetsCustomizeViewOpen: fns.handleHomeWidgetsCustomizeViewOpen }),
156624
+ React$1.createElement(HomeBottomNav, { value: bottomNavValue, onChange: setBottomNavValue, onQuickAction: handleBottomQuickAction, onMenu: handleToggleMenu, menuOpen: menuOpen, onOpenProfileSelector: () => profileSelector.fns.openProfileDrawer("bottom_nav_logo"), hasTerreiroContext: hasTerreiroContext, canUseSocial: Boolean(props.canUseSocial), socialNotificationsUnreadCount: (_l = props.socialNotificationsUnreadCount) !== null && _l !== void 0 ? _l : 0, leadingAction: bottomNavResolved.leading, trailingAction: bottomNavResolved.trailing }),
156625
+ React$1.createElement(HomeMenu$1, { open: menuOpen, onClose: handleCloseMenu, actions: data.quickActions, onActionClick: fns.handleQuickActionClick, widgets: (_m = data.menuWidgets) !== null && _m !== void 0 ? _m : [], onWidgetVisibilityChange: (_o = fns.handleHomeWidgetVisibilityChange) !== null && _o !== void 0 ? _o : (() => undefined), showQuickActions: showQuickActions, onShowQuickActionsChange: (_p = fns.handleShowQuickActionsChange) !== null && _p !== void 0 ? _p : (() => undefined), widgetOrder: widgetOrder, reorderableWidgets: (_q = data.reorderableWidgets) !== null && _q !== void 0 ? _q : [], defaultWidgetOrder: (_r = data.defaultWidgetOrder) !== null && _r !== void 0 ? _r : [], onWidgetOrderChange: (_s = fns.handleHomeWidgetOrderChange) !== null && _s !== void 0 ? _s : (() => undefined), onWidgetsCustomizeViewOpen: fns.handleHomeWidgetsCustomizeViewOpen, bottomNavShortcuts: bottomNavResolved.shortcuts, defaultBottomNavShortcuts: bottomNavResolved.defaults, onBottomNavShortcutChange: handleBottomNavShortcutChange, bottomNavProfileKind: hasTerreiroContext ? "terreiro" : "personal", bottomNavProfileLabel: (_u = (_t = data.selectedTerreiro) === null || _t === void 0 ? void 0 : _t.name) !== null && _u !== void 0 ? _u : BOTTOM_NAV_PROFILE_PERSONAL_LABEL }),
156503
156626
  React$1.createElement(ProfileSelectorDrawer, { open: profileSelector.data.profileDrawerOpen, onClose: profileSelector.fns.closeProfileDrawer, terreiros: profileSelector.data.terreiros, selectedTerreiroIdx: profileSelector.data.selectedTerreiroIdx, onTerreiroSelect: profileSelector.fns.handleTerreiroSelect, inviteShareUrl: props.inviteShareUrl, snackbarOpen: profileSelector.data.snackbarOpen, snackbarMsg: profileSelector.data.snackbarMsg, onSnackbarClose: profileSelector.fns.handleSnackbarClose }),
156504
156627
  React$1.createElement(SettingsDrawer, { open: drawerOpen, onClose: () => setDrawerOpen(false), onRefresh: fns.handleRefresh, onSettings: fns.handleSettingsClick }))));
156505
156628
  };
@@ -196046,8 +196169,13 @@ exports.MoonZodiacSchema = MoonZodiacSchema;
196046
196169
  exports.MyPermissionsDetailedSchema = MyPermissionsDetailedSchema;
196047
196170
  exports.MyPermissionsPage = MyPermissionsPage;
196048
196171
  exports.MyPermissionsPagePropsSchema = MyPermissionsPagePropsSchema;
196172
+ exports.NOTCHED_BAR_HEIGHT = NOTCHED_BAR_HEIGHT;
196173
+ exports.NOTCHED_BAR_PROTRUSION = NOTCHED_BAR_PROTRUSION;
196174
+ exports.NOTCHED_CIRCLE = NOTCHED_CIRCLE;
196175
+ exports.NOTCHED_ICON_LIFT = NOTCHED_ICON_LIFT;
196049
196176
  exports.NearbyTerreiroSearchPage = NearbyTerreiroSearchPage;
196050
196177
  exports.NotFoundPage = NotFoundPage;
196178
+ exports.NotchedBottomBarItem = NotchedBottomBarItem;
196051
196179
  exports.NotificationSettingsPage = NotificationSettingsPage;
196052
196180
  exports.NotificationSettingsPagePropsSchema = NotificationSettingsPagePropsSchema;
196053
196181
  exports.NotificationsPage = NotificationsPage;
@@ -196185,6 +196313,7 @@ exports.SOCIAL_DISPLAY_NAME_MAX_LENGTH = SOCIAL_DISPLAY_NAME_MAX_LENGTH;
196185
196313
  exports.SOCIAL_HOME_BOTTOM_NAV_CLEARANCE = SOCIAL_HOME_BOTTOM_NAV_CLEARANCE;
196186
196314
  exports.SOCIAL_HOME_BOTTOM_NAV_FLOAT_MB = SOCIAL_HOME_BOTTOM_NAV_FLOAT_MB;
196187
196315
  exports.SOCIAL_HOME_BOTTOM_NAV_HEIGHT = SOCIAL_HOME_BOTTOM_NAV_HEIGHT;
196316
+ exports.SOCIAL_HOME_BOTTOM_NAV_PROTRUSION = SOCIAL_HOME_BOTTOM_NAV_PROTRUSION;
196188
196317
  exports.SOCIAL_HOME_HEADER_HEIGHT = SOCIAL_HOME_HEADER_HEIGHT;
196189
196318
  exports.SOCIAL_ONBOARDING_INTRO_STEPS = SOCIAL_ONBOARDING_INTRO_STEPS;
196190
196319
  exports.SOCIAL_ONBOARDING_STEP_LABELS = SOCIAL_ONBOARDING_STEP_LABELS;
@@ -196335,6 +196464,7 @@ exports.getContentMarginTop = getContentMarginTop;
196335
196464
  exports.getContentPaddingTop = getContentPaddingTop;
196336
196465
  exports.getCustomBannerGradient = getCustomBannerGradient;
196337
196466
  exports.getDateString = getDateString;
196467
+ exports.getDefaultBottomNavShortcuts = getDefaultBottomNavShortcuts;
196338
196468
  exports.getDefaultHomeWidgetOrder = getDefaultHomeWidgetOrder;
196339
196469
  exports.getHomeWidgetsForProfile = getHomeWidgetsForProfile;
196340
196470
  exports.getReorderableHomeWidgetsForProfile = getReorderableHomeWidgetsForProfile;
@@ -196378,6 +196508,7 @@ exports.overlayZIndex = overlayZIndex;
196378
196508
  exports.parseScheduleDate = parseScheduleDate;
196379
196509
  exports.radiusPx = radiusPx;
196380
196510
  exports.reorderHomeWidgetOrder = reorderHomeWidgetOrder;
196511
+ exports.resolveBottomNavShortcuts = resolveBottomNavShortcuts;
196381
196512
  exports.resolveExperiencePostType = resolveExperiencePostType;
196382
196513
  exports.secondsToRoundedMinutes = secondsToRoundedMinutes;
196383
196514
  exports.startPasskeyAuthentication = startPasskeyAuthentication;
@@ -196425,6 +196556,7 @@ exports.useMonthlyFeePaymentsManagementPage = useMonthlyFeePaymentsManagementPag
196425
196556
  exports.useMoonCard = useMoonCard;
196426
196557
  exports.useMyPermissionsPage = useMyPermissionsPage;
196427
196558
  exports.useNotFoundPage = useNotFoundPage;
196559
+ exports.useNotchedSlotActive = useNotchedSlotActive;
196428
196560
  exports.useNotificationSettingsPage = useNotificationSettingsPage;
196429
196561
  exports.useOnboardingIntroModal = useOnboardingIntroModal;
196430
196562
  exports.useOnboardingMedium = useOnboardingMedium;