remoraid 2.10.7 → 2.14.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1001,7 +1001,7 @@ var require_lodash = __commonJS((exports2, module2) => {
1001
1001
  }
1002
1002
  SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
1003
1003
  SetCache.prototype.has = setCacheHas;
1004
- function Stack3(entries) {
1004
+ function Stack4(entries) {
1005
1005
  var data = this.__data__ = new ListCache(entries);
1006
1006
  this.size = data.size;
1007
1007
  }
@@ -1035,11 +1035,11 @@ var require_lodash = __commonJS((exports2, module2) => {
1035
1035
  this.size = data.size;
1036
1036
  return this;
1037
1037
  }
1038
- Stack3.prototype.clear = stackClear;
1039
- Stack3.prototype["delete"] = stackDelete;
1040
- Stack3.prototype.get = stackGet;
1041
- Stack3.prototype.has = stackHas;
1042
- Stack3.prototype.set = stackSet;
1038
+ Stack4.prototype.clear = stackClear;
1039
+ Stack4.prototype["delete"] = stackDelete;
1040
+ Stack4.prototype.get = stackGet;
1041
+ Stack4.prototype.has = stackHas;
1042
+ Stack4.prototype.set = stackSet;
1043
1043
  function arrayLikeKeys(value, inherited) {
1044
1044
  var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String) : [], length = result2.length;
1045
1045
  for (var key in value) {
@@ -1155,7 +1155,7 @@ var require_lodash = __commonJS((exports2, module2) => {
1155
1155
  result2 = initCloneByTag(value, tag, isDeep);
1156
1156
  }
1157
1157
  }
1158
- stack || (stack = new Stack3);
1158
+ stack || (stack = new Stack4);
1159
1159
  var stacked = stack.get(value);
1160
1160
  if (stacked) {
1161
1161
  return stacked;
@@ -1424,21 +1424,21 @@ var require_lodash = __commonJS((exports2, module2) => {
1424
1424
  objIsObj = false;
1425
1425
  }
1426
1426
  if (isSameTag && !objIsObj) {
1427
- stack || (stack = new Stack3);
1427
+ stack || (stack = new Stack4);
1428
1428
  return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
1429
1429
  }
1430
1430
  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
1431
1431
  var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
1432
1432
  if (objIsWrapped || othIsWrapped) {
1433
1433
  var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
1434
- stack || (stack = new Stack3);
1434
+ stack || (stack = new Stack4);
1435
1435
  return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
1436
1436
  }
1437
1437
  }
1438
1438
  if (!isSameTag) {
1439
1439
  return false;
1440
1440
  }
1441
- stack || (stack = new Stack3);
1441
+ stack || (stack = new Stack4);
1442
1442
  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
1443
1443
  }
1444
1444
  function baseIsMap(value) {
@@ -1464,7 +1464,7 @@ var require_lodash = __commonJS((exports2, module2) => {
1464
1464
  return false;
1465
1465
  }
1466
1466
  } else {
1467
- var stack = new Stack3;
1467
+ var stack = new Stack4;
1468
1468
  if (customizer) {
1469
1469
  var result2 = customizer(objValue, srcValue, key, object, source, stack);
1470
1470
  }
@@ -1560,7 +1560,7 @@ var require_lodash = __commonJS((exports2, module2) => {
1560
1560
  return;
1561
1561
  }
1562
1562
  baseFor(source, function(srcValue, key) {
1563
- stack || (stack = new Stack3);
1563
+ stack || (stack = new Stack4);
1564
1564
  if (isObject(srcValue)) {
1565
1565
  baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
1566
1566
  } else {
@@ -5471,7 +5471,9 @@ __export(exports_core, {
5471
5471
  useHydrationStatus: () => useHydrationStatus,
5472
5472
  useHydratedMantineColorScheme: () => useHydratedMantineColorScheme,
5473
5473
  useFrameLayout: () => useFrameLayout,
5474
+ isValidElementOfType: () => isValidElementOfType,
5474
5475
  isFrameLayout: () => isFrameLayout,
5476
+ getElementTypeName: () => getElementTypeName,
5475
5477
  defaultUserExperienceCookieName: () => defaultUserExperienceCookieName,
5476
5478
  defaultUserExperience: () => defaultUserExperience,
5477
5479
  defaultSettingsWidgetOptions: () => defaultSettingsWidgetContext,
@@ -5479,10 +5481,17 @@ __export(exports_core, {
5479
5481
  defaultNavbarSettingsWidgetId: () => defaultNavbarSettingsWidgetId,
5480
5482
  defaultLayoutsContext: () => defaultLayoutsContext,
5481
5483
  defaultFrameLayoutContext: () => defaultFrameLayoutContext,
5484
+ defaultAppShellNavbarPositions: () => defaultAppShellNavbarPositions,
5482
5485
  defaultAppShellLayoutId: () => defaultAppShellLayoutId,
5486
+ defaultAppShellFooterPositions: () => defaultAppShellFooterPositions,
5483
5487
  defaultAppContext: () => defaultAppContext,
5484
5488
  createUserExperienceContext: () => createUserExperienceContext,
5485
5489
  createRemoraidTheme: () => createRemoraidTheme,
5490
+ createContextCluster: () => createContextCluster,
5491
+ co: () => co,
5492
+ asElementOrPropsOfType: () => asElementOrPropsOfType,
5493
+ asElementOfType: () => asElementOfType,
5494
+ asChildrenOfType: () => asChildrenOfType,
5486
5495
  WidgetWrapper: () => WidgetWrapper_default,
5487
5496
  WidgetSelectionHeader: () => WidgetSelectionHeader,
5488
5497
  Widget: () => Widget,
@@ -5507,6 +5516,7 @@ __export(exports_core, {
5507
5516
  FrameLayout: () => FrameLayout_default,
5508
5517
  FooterVariant: () => FooterVariant,
5509
5518
  EnvironmentShell: () => EnvironmentShell,
5519
+ ContextClusterProvider: () => ContextClusterProvider,
5510
5520
  BadgeMinimal: () => BadgeMinimal,
5511
5521
  BadgeGroup: () => BadgeGroup,
5512
5522
  AppShell: () => AppShell_default,
@@ -5698,16 +5708,50 @@ var FrameLayoutVariant;
5698
5708
  })(FrameLayoutVariant ||= {});
5699
5709
 
5700
5710
  // src/core/lib/utils.ts
5711
+ var import_react2 = require("react");
5701
5712
  var co = (condition, value, fallback) => condition(value) ? value : fallback;
5713
+ var isValidElementOfType = (type, value) => {
5714
+ return import_react2.isValidElement(value) && value.type === type;
5715
+ };
5716
+ var getElementTypeName = (type) => {
5717
+ if (typeof type === "string") {
5718
+ return type;
5719
+ }
5720
+ if (typeof type === "function") {
5721
+ return type.displayName ?? type.name ?? "anonymous component";
5722
+ }
5723
+ return "unknown";
5724
+ };
5725
+ var asElementOfType = (type, element, additionalErrorMessage) => {
5726
+ if (isValidElementOfType(type, element)) {
5727
+ return element;
5728
+ }
5729
+ throw new TypeError(`Expected React element of type ${getElementTypeName(type)}, but received type: ${getElementTypeName(element.type)}.${additionalErrorMessage !== undefined && additionalErrorMessage.length > 0 ? ` ${additionalErrorMessage}` : ""}`);
5730
+ };
5731
+ var asChildrenOfType = (type, children, additionalErrorMessage) => {
5732
+ if (children === undefined || children === null) {
5733
+ return children;
5734
+ }
5735
+ if (Array.isArray(children)) {
5736
+ return children.map((child) => asChildrenOfType(type, child, additionalErrorMessage));
5737
+ }
5738
+ return asElementOfType(type, children, additionalErrorMessage);
5739
+ };
5740
+ var asElementOrPropsOfType = (type, elementOrProps, additionalErrorMessage) => {
5741
+ if (import_react2.isValidElement(elementOrProps)) {
5742
+ return asElementOfType(type, elementOrProps, additionalErrorMessage);
5743
+ }
5744
+ return elementOrProps;
5745
+ };
5702
5746
 
5703
5747
  // src/core/components/RemoraidProvider/ThemeProvider/index.tsx
5704
5748
  var import_core2 = require("@mantine/core");
5705
5749
  var import_icons_react = require("@tabler/icons-react");
5706
- var import_react3 = __toESM(require("react"));
5750
+ var import_react4 = __toESM(require("react"));
5707
5751
 
5708
5752
  // src/core/components/RemoraidProvider/HydrationStatusProvider/index.tsx
5709
5753
  var import_core = require("@mantine/core");
5710
- var import_react2 = require("react");
5754
+ var import_react3 = require("react");
5711
5755
  var jsx_dev_runtime2 = require("react/jsx-dev-runtime");
5712
5756
  var defaultHydrationStatus = {
5713
5757
  hasHydrated: false,
@@ -5715,9 +5759,9 @@ var defaultHydrationStatus = {
5715
5759
  return;
5716
5760
  }
5717
5761
  };
5718
- var hydrationStatusContext = import_react2.createContext(defaultHydrationStatus);
5762
+ var hydrationStatusContext = import_react3.createContext(defaultHydrationStatus);
5719
5763
  var useHydrationStatus = () => {
5720
- return import_react2.useContext(hydrationStatusContext);
5764
+ return import_react3.useContext(hydrationStatusContext);
5721
5765
  };
5722
5766
  var useHydratedMantineColorScheme = () => {
5723
5767
  const { ensureHydration } = useHydrationStatus();
@@ -5726,12 +5770,12 @@ var useHydratedMantineColorScheme = () => {
5726
5770
  function HydrationStatusProvider({
5727
5771
  children
5728
5772
  }) {
5729
- const [hasHydrated, setHasHydrated] = import_react2.useState(defaultHydrationStatus.hasHydrated);
5730
- const hydrationStatus = import_react2.useMemo(() => ({
5773
+ const [hasHydrated, setHasHydrated] = import_react3.useState(defaultHydrationStatus.hasHydrated);
5774
+ const hydrationStatus = import_react3.useMemo(() => ({
5731
5775
  hasHydrated,
5732
5776
  ensureHydration: (v) => hasHydrated ? v : undefined
5733
5777
  }), [hasHydrated]);
5734
- import_react2.useEffect(() => {
5778
+ import_react3.useEffect(() => {
5735
5779
  setHasHydrated(true);
5736
5780
  }, []);
5737
5781
  return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(hydrationStatusContext.Provider, {
@@ -5831,9 +5875,9 @@ var createRemoraidTheme = (customTheme, dependencies) => {
5831
5875
  }
5832
5876
  };
5833
5877
  };
5834
- var themeContext = import_react3.default.createContext(createRemoraidTheme());
5878
+ var themeContext = import_react4.default.createContext(createRemoraidTheme());
5835
5879
  var useRemoraidTheme = () => {
5836
- return import_react3.useContext(themeContext);
5880
+ return import_react4.useContext(themeContext);
5837
5881
  };
5838
5882
  function ThemeProvider({
5839
5883
  theme,
@@ -5841,7 +5885,7 @@ function ThemeProvider({
5841
5885
  }) {
5842
5886
  const mantineTheme = import_core2.useMantineTheme();
5843
5887
  const { colorScheme } = useHydratedMantineColorScheme();
5844
- const remoraidTheme = import_react3.useMemo(() => {
5888
+ const remoraidTheme = import_react4.useMemo(() => {
5845
5889
  const dependencies = {
5846
5890
  mantineTheme,
5847
5891
  colorScheme
@@ -5858,13 +5902,13 @@ function ThemeProvider({
5858
5902
  var import_react_cookie2 = require("react-cookie");
5859
5903
 
5860
5904
  // src/core/components/RemoraidProvider/CoreUserExperienceProvider/index.tsx
5861
- var import_react5 = require("react");
5905
+ var import_react6 = require("react");
5862
5906
 
5863
5907
  // src/core/components/UserExperienceProviderWrapper/index.tsx
5864
- var import_react4 = require("react");
5908
+ var import_react5 = require("react");
5865
5909
  var import_react_cookie = require("react-cookie");
5866
5910
  var jsx_dev_runtime4 = require("react/jsx-dev-runtime");
5867
- var createUserExperienceContext = (defaultUserExperience) => import_react4.createContext({
5911
+ var createUserExperienceContext = (defaultUserExperience) => import_react5.createContext({
5868
5912
  userExperience: defaultUserExperience,
5869
5913
  updateUserExperience: () => {},
5870
5914
  processedCookie: false,
@@ -5879,18 +5923,18 @@ function UserExperienceProviderWrapper({
5879
5923
  initialValue
5880
5924
  }) {
5881
5925
  const [cookies, setCookie] = import_react_cookie.useCookies();
5882
- const initialUserExperience = {
5883
- ...defaultUserExperience,
5884
- ...initialValue
5885
- };
5886
- const [userExperience, setUserExperience] = import_react4.useState(initialUserExperience);
5887
- const [processedCookie, setProcessedCookie] = import_react4.useState(false);
5926
+ let initialUserExperience = defaultUserExperience;
5927
+ if (typeof initialValue === "object" && typeof initialUserExperience === "object") {
5928
+ initialUserExperience = { ...initialUserExperience, ...initialValue };
5929
+ }
5930
+ const [userExperience, setUserExperience] = import_react5.useState(initialUserExperience);
5931
+ const [processedCookie, setProcessedCookie] = import_react5.useState(false);
5888
5932
  const updateUserExperience = (p) => {
5889
5933
  const updatedUserExperience = typeof p === "function" ? p(userExperience) : p;
5890
5934
  setCookie(cookieName, updatedUserExperience, { path: "/" });
5891
5935
  setUserExperience(updatedUserExperience);
5892
5936
  };
5893
- import_react4.useEffect(() => {
5937
+ import_react5.useEffect(() => {
5894
5938
  const userExperienceCookie = cookies[cookieName];
5895
5939
  if (userExperienceCookie && isValidUserExperience(userExperienceCookie)) {
5896
5940
  setUserExperience(userExperienceCookie);
@@ -5919,7 +5963,7 @@ var defaultUserExperience = {
5919
5963
  var defaultUserExperienceCookieName = "remoraid-core-user-experience";
5920
5964
  var coreUserExperienceContext = createUserExperienceContext(defaultUserExperience);
5921
5965
  var useRemoraidUserExperience = () => {
5922
- return import_react5.useContext(coreUserExperienceContext);
5966
+ return import_react6.useContext(coreUserExperienceContext);
5923
5967
  };
5924
5968
  function CoreUserExperienceProvider({
5925
5969
  children,
@@ -5952,20 +5996,20 @@ function CoreUserExperienceProvider({
5952
5996
  }
5953
5997
 
5954
5998
  // src/core/components/RemoraidProvider/LayoutsProvider/index.tsx
5955
- var import_react6 = require("react");
5999
+ var import_react7 = require("react");
5956
6000
  var jsx_dev_runtime6 = require("react/jsx-dev-runtime");
5957
6001
  var defaultLayoutsContext = {
5958
6002
  layouts: {},
5959
6003
  setLayouts: () => {}
5960
6004
  };
5961
- var layoutsContext = import_react6.createContext(defaultLayoutsContext);
6005
+ var layoutsContext = import_react7.createContext(defaultLayoutsContext);
5962
6006
  var useLayouts = () => {
5963
- return import_react6.useContext(layoutsContext);
6007
+ return import_react7.useContext(layoutsContext);
5964
6008
  };
5965
6009
  function LayoutsProvider({
5966
6010
  children
5967
6011
  }) {
5968
- const [layouts, setLayouts] = import_react6.useState({});
6012
+ const [layouts, setLayouts] = import_react7.useState({});
5969
6013
  return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(layoutsContext.Provider, {
5970
6014
  value: { layouts, setLayouts },
5971
6015
  children
@@ -6010,17 +6054,17 @@ var import_core3 = require("@mantine/core");
6010
6054
  var import_icons_react2 = require("@tabler/icons-react");
6011
6055
  var import_link = __toESM(require("next/link"));
6012
6056
  var import_navigation = require("next/navigation");
6013
- var import_react8 = require("react");
6057
+ var import_react9 = require("react");
6014
6058
 
6015
6059
  // src/core/components/AppShell/AppProvider/index.tsx
6016
- var import_react7 = require("react");
6060
+ var import_react8 = require("react");
6017
6061
  var jsx_dev_runtime8 = require("react/jsx-dev-runtime");
6018
6062
  var defaultAppContext = {
6019
6063
  navigablePages: []
6020
6064
  };
6021
- var appContext = import_react7.createContext(defaultAppContext);
6065
+ var appContext = import_react8.createContext(defaultAppContext);
6022
6066
  var useRemoraidApp = () => {
6023
- return import_react7.useContext(appContext);
6067
+ return import_react8.useContext(appContext);
6024
6068
  };
6025
6069
  function AppProvider({
6026
6070
  appContext: appContextProps,
@@ -6044,7 +6088,7 @@ function NavbarLink({
6044
6088
  href,
6045
6089
  indicator
6046
6090
  }) {
6047
- const [isHoveringRoleIndicator, setIsHoveringRoleIndicator] = import_react8.useState(false);
6091
+ const [isHoveringRoleIndicator, setIsHoveringRoleIndicator] = import_react9.useState(false);
6048
6092
  const iconProps = {
6049
6093
  size: iconSize,
6050
6094
  stroke: 1.5
@@ -6106,7 +6150,7 @@ function NavbarMinimal({
6106
6150
  const { setColorScheme, colorScheme } = useHydratedMantineColorScheme();
6107
6151
  const { userExperience } = useRemoraidUserExperience();
6108
6152
  const { navigablePages, logo, auth } = useRemoraidApp();
6109
- const [isHoveringRoleIndicator, setIsHoveringRoleIndicator] = import_react8.useState(false);
6153
+ const [isHoveringRoleIndicator, setIsHoveringRoleIndicator] = import_react9.useState(false);
6110
6154
  const linkProps = {
6111
6155
  linkSize,
6112
6156
  iconSize,
@@ -6221,7 +6265,7 @@ function FooterMinimal({
6221
6265
 
6222
6266
  // src/core/components/FrameLayout/index.tsx
6223
6267
  var import_core6 = require("@mantine/core");
6224
- var import_react9 = require("react");
6268
+ var import_react10 = require("react");
6225
6269
 
6226
6270
  // src/core/components/FrameLayout/Element/index.tsx
6227
6271
  var import_core5 = require("@mantine/core");
@@ -6286,9 +6330,9 @@ var defaultFrameLayoutContext = {
6286
6330
  },
6287
6331
  setLayout: () => {}
6288
6332
  };
6289
- var layoutContext = import_react9.createContext(defaultFrameLayoutContext);
6333
+ var layoutContext = import_react10.createContext(defaultFrameLayoutContext);
6290
6334
  var useFrameLayout = () => {
6291
- return import_react9.useContext(layoutContext);
6335
+ return import_react10.useContext(layoutContext);
6292
6336
  };
6293
6337
  function FrameLayout({
6294
6338
  variant = defaultFrameLayoutVariant,
@@ -6299,7 +6343,7 @@ function FrameLayout({
6299
6343
  const theme = useRemoraidTheme();
6300
6344
  const { layouts, setLayouts } = useLayouts();
6301
6345
  const layout = layouts[layoutId];
6302
- const setLayout = import_react9.useMemo(() => {
6346
+ const setLayout = import_react10.useMemo(() => {
6303
6347
  return (value) => {
6304
6348
  setLayouts((prev) => ({
6305
6349
  ...prev,
@@ -6307,25 +6351,25 @@ function FrameLayout({
6307
6351
  }));
6308
6352
  };
6309
6353
  }, [layoutId, setLayouts]);
6310
- const topSection = import_react9.useCallback((n) => {
6354
+ const topSection = import_react10.useCallback((n) => {
6311
6355
  setLayout((prev) => ({
6312
6356
  ...prev,
6313
6357
  sections: { ...prev?.sections, ["top" /* Top */]: n }
6314
6358
  }));
6315
6359
  }, [setLayout]);
6316
- const bottomSection = import_react9.useCallback((n) => {
6360
+ const bottomSection = import_react10.useCallback((n) => {
6317
6361
  setLayout((prev) => ({
6318
6362
  ...prev,
6319
6363
  sections: { ...prev?.sections, ["bottom" /* Bottom */]: n }
6320
6364
  }));
6321
6365
  }, [setLayout]);
6322
- const leftSection = import_react9.useCallback((n) => {
6366
+ const leftSection = import_react10.useCallback((n) => {
6323
6367
  setLayout((prev) => ({
6324
6368
  ...prev,
6325
6369
  sections: { ...prev?.sections, ["left" /* Left */]: n }
6326
6370
  }));
6327
6371
  }, [setLayout]);
6328
- const rightSection = import_react9.useCallback((n) => {
6372
+ const rightSection = import_react10.useCallback((n) => {
6329
6373
  setLayout((prev) => ({
6330
6374
  ...prev,
6331
6375
  sections: { ...prev?.sections, ["right" /* Right */]: n }
@@ -6405,23 +6449,27 @@ var FrameLayout_default = Object.assign(FrameLayout, {
6405
6449
  // src/core/components/AppShell/index.tsx
6406
6450
  var jsx_dev_runtime13 = require("react/jsx-dev-runtime");
6407
6451
  var defaultAppShellLayoutId = "remoraidAppShell";
6408
- var defaultProps = {
6409
- navbarVariant: null,
6410
- footerVariant: null
6411
- };
6452
+ var defaultAppShellNavbarPositions = { ["minimal" /* Minimal */]: "left" /* Left */ };
6453
+ var defaultAppShellFooterPositions = { ["minimal" /* Minimal */]: "content" /* Content */ };
6412
6454
  function AppShell(props) {
6413
6455
  const {
6414
6456
  children,
6415
6457
  navbarVariant,
6416
6458
  footerVariant,
6417
- navbarPosition,
6418
- footerPosition,
6419
6459
  appContext: appContext2,
6420
6460
  componentsProps
6421
6461
  } = {
6422
- ...defaultProps,
6462
+ navbarVariant: null,
6463
+ footerVariant: null,
6423
6464
  ...props
6424
6465
  };
6466
+ let { navbarPosition, footerPosition } = props;
6467
+ if (navbarVariant !== null && navbarPosition === undefined) {
6468
+ navbarPosition = defaultAppShellNavbarPositions[navbarVariant];
6469
+ }
6470
+ if (footerVariant !== null && footerPosition === undefined) {
6471
+ footerPosition = defaultAppShellFooterPositions[footerVariant];
6472
+ }
6425
6473
  let navbar;
6426
6474
  let footer;
6427
6475
  let navbarContainerProps = {};
@@ -6445,32 +6493,50 @@ function AppShell(props) {
6445
6493
  return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(AppProvider, {
6446
6494
  appContext: appContext2,
6447
6495
  ...componentsProps?.AppProvider,
6448
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(FrameLayout_default, {
6449
- layoutId: defaultAppShellLayoutId,
6450
- ...componentsProps?.layout,
6451
- children: [
6452
- navbarPosition !== undefined && navbarPosition !== "content" /* Content */ && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(FrameLayout_default.Element, {
6453
- section: navbarPosition,
6454
- componentsProps: { container: { ...navbarContainerProps } },
6455
- children: navbar
6456
- }, undefined, false, undefined, this),
6457
- footerPosition !== undefined && footerPosition !== "content" /* Content */ && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(FrameLayout_default.Element, {
6458
- section: footerPosition,
6459
- componentsProps: { container: { ...footerContainerProps } },
6460
- children: footer
6461
- }, undefined, false, undefined, this),
6462
- navbarPosition !== undefined && navbarPosition === "content" /* Content */ && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
6463
- children: navbar
6464
- }, undefined, false, undefined, this),
6465
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(import_core7.Box, {
6466
- ...componentsProps?.childrenContainer,
6467
- children
6468
- }, undefined, false, undefined, this),
6469
- footerPosition !== undefined && footerPosition === "content" /* Content */ && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
6470
- children: footer
6471
- }, undefined, false, undefined, this)
6472
- ]
6473
- }, undefined, true, undefined, this)
6496
+ children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(import_core7.Box, {
6497
+ h: "100vh",
6498
+ ...componentsProps?.container,
6499
+ children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(FrameLayout_default, {
6500
+ layoutId: defaultAppShellLayoutId,
6501
+ ...componentsProps?.layout,
6502
+ children: [
6503
+ navbarPosition !== undefined && navbarPosition !== "content" /* Content */ && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(FrameLayout_default.Element, {
6504
+ section: navbarPosition,
6505
+ ...componentsProps?.navbarLayoutElement,
6506
+ componentsProps: {
6507
+ ...componentsProps?.navbarLayoutElement?.componentsProps,
6508
+ container: {
6509
+ ...navbarContainerProps,
6510
+ ...componentsProps?.navbarLayoutElement?.componentsProps?.container
6511
+ }
6512
+ },
6513
+ children: navbar
6514
+ }, undefined, false, undefined, this),
6515
+ footerPosition !== undefined && footerPosition !== "content" /* Content */ && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(FrameLayout_default.Element, {
6516
+ section: footerPosition,
6517
+ ...componentsProps?.footerLayoutElement,
6518
+ componentsProps: {
6519
+ ...componentsProps?.footerLayoutElement?.componentsProps,
6520
+ container: {
6521
+ ...footerContainerProps,
6522
+ ...componentsProps?.footerLayoutElement?.componentsProps?.container
6523
+ }
6524
+ },
6525
+ children: footer
6526
+ }, undefined, false, undefined, this),
6527
+ navbarPosition !== undefined && navbarPosition === "content" /* Content */ && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
6528
+ children: navbar
6529
+ }, undefined, false, undefined, this),
6530
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(import_core7.Box, {
6531
+ ...componentsProps?.childrenContainer,
6532
+ children
6533
+ }, undefined, false, undefined, this),
6534
+ footerPosition !== undefined && footerPosition === "content" /* Content */ && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
6535
+ children: footer
6536
+ }, undefined, false, undefined, this)
6537
+ ]
6538
+ }, undefined, true, undefined, this)
6539
+ }, undefined, false, undefined, this)
6474
6540
  }, undefined, false, undefined, this);
6475
6541
  }
6476
6542
  var AppShell_default = Object.assign(AppShell, {
@@ -6481,7 +6547,7 @@ var AppShell_default = Object.assign(AppShell, {
6481
6547
  var import_core10 = require("@mantine/core");
6482
6548
 
6483
6549
  // src/core/components/Page/index.tsx
6484
- var import_react10 = __toESM(require("react"));
6550
+ var import_react11 = __toESM(require("react"));
6485
6551
  var import_navigation2 = require("next/navigation");
6486
6552
 
6487
6553
  // src/core/components/Page/PageContainer/index.tsx
@@ -6503,9 +6569,9 @@ function PageContainer({
6503
6569
 
6504
6570
  // src/core/components/Page/index.tsx
6505
6571
  var jsx_dev_runtime15 = require("react/jsx-dev-runtime");
6506
- var pageContext = import_react10.default.createContext(null);
6572
+ var pageContext = import_react11.default.createContext(null);
6507
6573
  var usePage = () => {
6508
- return import_react10.useContext(pageContext);
6574
+ return import_react11.useContext(pageContext);
6509
6575
  };
6510
6576
  function Page({
6511
6577
  children,
@@ -6517,7 +6583,7 @@ function Page({
6517
6583
  const pathname = import_navigation2.usePathname();
6518
6584
  const { isPageRegistered, registerPage } = useWidgets();
6519
6585
  const pageId = config?.pageId ?? pathname;
6520
- import_react10.useEffect(() => {
6586
+ import_react11.useEffect(() => {
6521
6587
  if (!isPageRegistered(pageId)) {
6522
6588
  if (config?.registerPageDirectly) {
6523
6589
  registerPage(pageId, []);
@@ -6649,20 +6715,11 @@ function CloseButton({ widgetId }) {
6649
6715
  }
6650
6716
  // src/core/components/BadgeGroup/index.tsx
6651
6717
  var import_core13 = require("@mantine/core");
6652
- var import_react11 = __toESM(require("react"));
6718
+ var import_react12 = __toESM(require("react"));
6653
6719
 
6654
6720
  // src/core/components/BadgeMinimal/index.tsx
6655
6721
  var import_core12 = require("@mantine/core");
6656
6722
  var jsx_dev_runtime19 = require("react/jsx-dev-runtime");
6657
- var isBadgeMinimalProps = (e) => {
6658
- if (typeof e !== "object") {
6659
- return false;
6660
- }
6661
- if (!("label" in e)) {
6662
- return false;
6663
- }
6664
- return true;
6665
- };
6666
6723
  function BadgeMinimal(props) {
6667
6724
  const { label, tooltip, mounted, componentsProps } = props;
6668
6725
  const theme = useRemoraidTheme();
@@ -6694,27 +6751,30 @@ function BadgeMinimal(props) {
6694
6751
  var jsx_dev_runtime20 = require("react/jsx-dev-runtime");
6695
6752
  var react = require("react");
6696
6753
  function BadgeGroup({
6697
- badges,
6754
+ badges: badgesProp,
6698
6755
  gap,
6699
6756
  breakpoint,
6700
6757
  componentsProps
6701
6758
  }) {
6702
6759
  const theme = useRemoraidTheme();
6703
- const numVisibleBadges = badges.filter((e) => isBadgeMinimalProps(e) ? e.mounted !== false : true).length;
6760
+ const badges = badgesProp.map((badge) => asElementOrPropsOfType(BadgeMinimal, badge, "Check 'badges' property passed to 'BadgeGroup'."));
6761
+ const numVisibleBadges = badges.filter((badge) => isValidElementOfType(BadgeMinimal, badge) ? badge.props.mounted : badge.mounted !== false).length;
6704
6762
  return /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(jsx_dev_runtime20.Fragment, {
6705
6763
  children: [
6706
6764
  /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(import_core13.Group, {
6707
6765
  gap: gap ?? "xs",
6708
6766
  wrap: "nowrap",
6709
6767
  visibleFrom: breakpoint ?? theme.breakpoints.badgeGroupCollapse,
6710
- children: badges.map((e, i) => {
6711
- if (isBadgeMinimalProps(e)) {
6712
- return /* @__PURE__ */ react.createElement(BadgeMinimal, {
6713
- ...e,
6714
- key: i
6715
- });
6716
- }
6717
- return e;
6768
+ children: badges.map((badge, i) => {
6769
+ if (isValidElementOfType(BadgeMinimal, badge)) {
6770
+ return badge;
6771
+ } else if (import_react12.isValidElement(badge)) {
6772
+ throw new TypeError(`Expected React element of type ${BadgeMinimal.name}, but received type: ${typeof badge.type === "string" ? badge.type : badge.type?.name ?? "unknown"}. Check the 'badges' property of this widget.`);
6773
+ }
6774
+ return /* @__PURE__ */ react.createElement(BadgeMinimal, {
6775
+ ...badge,
6776
+ key: i
6777
+ });
6718
6778
  })
6719
6779
  }, undefined, false, undefined, this),
6720
6780
  /* @__PURE__ */ jsx_dev_runtime20.jsxDEV(import_core13.Tooltip, {
@@ -6736,17 +6796,7 @@ function BadgeGroup({
6736
6796
  // src/core/components/AlertMinimal/index.tsx
6737
6797
  var import_core14 = require("@mantine/core");
6738
6798
  var jsx_dev_runtime21 = require("react/jsx-dev-runtime");
6739
- var isAlertMinimalProps = (e) => {
6740
- if (typeof e !== "object") {
6741
- return false;
6742
- }
6743
- if (!("category" in e)) {
6744
- return false;
6745
- }
6746
- return true;
6747
- };
6748
6799
  function AlertMinimal({
6749
- children,
6750
6800
  title,
6751
6801
  category,
6752
6802
  text,
@@ -6754,7 +6804,8 @@ function AlertMinimal({
6754
6804
  mounted,
6755
6805
  mt,
6756
6806
  mb,
6757
- componentsProps
6807
+ componentsProps,
6808
+ children
6758
6809
  }) {
6759
6810
  const theme = useRemoraidTheme();
6760
6811
  return /* @__PURE__ */ jsx_dev_runtime21.jsxDEV(import_core14.Transition, {
@@ -6786,15 +6837,6 @@ function AlertMinimal({
6786
6837
  var import_core15 = require("@mantine/core");
6787
6838
  var import_icons_react6 = require("@tabler/icons-react");
6788
6839
  var jsx_dev_runtime22 = require("react/jsx-dev-runtime");
6789
- var isRemoraidButtonProps = (e) => {
6790
- if (typeof e !== "object") {
6791
- return false;
6792
- }
6793
- if (!("label" in e)) {
6794
- return false;
6795
- }
6796
- return true;
6797
- };
6798
6840
  function RemoraidButton({
6799
6841
  label,
6800
6842
  responsive,
@@ -6852,7 +6894,7 @@ function RemoraidButton({
6852
6894
  }
6853
6895
  // src/core/components/Widget/WidgetWrapper/index.tsx
6854
6896
  var import_core16 = require("@mantine/core");
6855
- var import_react12 = require("react");
6897
+ var import_react13 = require("react");
6856
6898
  var jsx_dev_runtime23 = require("react/jsx-dev-runtime");
6857
6899
  function WidgetWrapper({
6858
6900
  children,
@@ -6871,7 +6913,7 @@ function WidgetWrapper({
6871
6913
  const page = usePage();
6872
6914
  const theme = useRemoraidTheme();
6873
6915
  const pageRegistered = page ? isPageRegistered(page.pageId) : false;
6874
- import_react12.useEffect(() => {
6916
+ import_react13.useEffect(() => {
6875
6917
  if (!page) {
6876
6918
  return;
6877
6919
  }
@@ -6920,14 +6962,17 @@ function Widget({
6920
6962
  id,
6921
6963
  config,
6922
6964
  title,
6923
- badges,
6924
- buttons,
6925
- alerts,
6965
+ badges: badgesProp,
6966
+ buttons: buttonsProp,
6967
+ alerts: alertsProp,
6926
6968
  gaps,
6927
6969
  loading,
6928
6970
  mt,
6929
6971
  componentsProps
6930
6972
  }) {
6973
+ const buttons = buttonsProp?.map((button) => asElementOrPropsOfType(RemoraidButton, button, "Check the 'buttons' property of this widget."));
6974
+ const alerts = alertsProp?.map((alert) => asElementOrPropsOfType(AlertMinimal, alert, "Check the 'alerts' property of this widget."));
6975
+ const badges = badgesProp?.map((badge) => asElementOrPropsOfType(BadgeMinimal, badge, "Check the 'badges' property of this widget."));
6931
6976
  const badgesGap = (typeof gaps === "object" ? gaps.badges : gaps) ?? "xs";
6932
6977
  const buttonsGap = (typeof gaps === "object" ? gaps.buttons : gaps) ?? "xs";
6933
6978
  const alertsGap = (typeof gaps === "object" ? gaps.alerts : gaps) ?? "xs";
@@ -6968,31 +7013,37 @@ function Widget({
6968
7013
  /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(import_core17.Group, {
6969
7014
  gap: buttonsGap,
6970
7015
  wrap: "nowrap",
6971
- children: buttons !== undefined && buttons.map((e, i) => {
6972
- if (isRemoraidButtonProps(e)) {
6973
- return /* @__PURE__ */ react2.createElement(RemoraidButton, {
6974
- ...e,
6975
- key: i
6976
- });
7016
+ children: buttons !== undefined && buttons.map((button, i) => {
7017
+ if (isValidElementOfType(RemoraidButton, button)) {
7018
+ return button;
6977
7019
  }
6978
- return e;
7020
+ return /* @__PURE__ */ react2.createElement(RemoraidButton, {
7021
+ ...button,
7022
+ key: i
7023
+ });
6979
7024
  })
6980
7025
  }, undefined, false, undefined, this)
6981
7026
  ]
6982
7027
  }, undefined, true, undefined, this),
6983
7028
  /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(import_core17.Divider, {
6984
- my: "md"
7029
+ my: "md",
7030
+ ...componentsProps?.divider
6985
7031
  }, undefined, false, undefined, this),
6986
- alerts !== undefined && alerts.map((a, i) => {
6987
- if (isAlertMinimalProps(a)) {
7032
+ /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(import_core17.Stack, {
7033
+ align: "stretch",
7034
+ gap: alertsGap,
7035
+ mb: alerts && alerts.length > 0 ? "md" : 0,
7036
+ ...componentsProps?.alertsContainer,
7037
+ children: alerts?.map((alert, i) => {
7038
+ if (isValidElementOfType(AlertMinimal, alert)) {
7039
+ return alert;
7040
+ }
6988
7041
  return /* @__PURE__ */ react2.createElement(AlertMinimal, {
6989
- ...a,
6990
- mb: alertsGap,
7042
+ ...alert,
6991
7043
  key: i
6992
7044
  });
6993
- }
6994
- return a;
6995
- }),
7045
+ })
7046
+ }, undefined, false, undefined, this),
6996
7047
  loading ? /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(import_core17.Center, {
6997
7048
  children: /* @__PURE__ */ jsx_dev_runtime24.jsxDEV(import_core17.Loader, {
6998
7049
  ...componentsProps?.loader
@@ -7064,7 +7115,7 @@ function EnvironmentShell({
7064
7115
  return alert;
7065
7116
  }
7066
7117
  // src/core/components/SettingsWidget/index.tsx
7067
- var import_react13 = require("react");
7118
+ var import_react14 = require("react");
7068
7119
  var import_icons_react8 = require("@tabler/icons-react");
7069
7120
 
7070
7121
  // src/core/components/SettingsWidget/SaveButton/index.tsx
@@ -7106,9 +7157,9 @@ function SaveButton({
7106
7157
  // src/core/components/SettingsWidget/index.tsx
7107
7158
  var jsx_dev_runtime28 = require("react/jsx-dev-runtime");
7108
7159
  var defaultSettingsWidgetContext = {};
7109
- var settingsWidgetContext = import_react13.createContext(defaultSettingsWidgetContext);
7160
+ var settingsWidgetContext = import_react14.createContext(defaultSettingsWidgetContext);
7110
7161
  var useSettingsWidgetContext = () => {
7111
- return import_react13.useContext(settingsWidgetContext);
7162
+ return import_react14.useContext(settingsWidgetContext);
7112
7163
  };
7113
7164
  function SettingsWidget({
7114
7165
  children,
@@ -7155,7 +7206,7 @@ var SettingsWidget_default = Object.assign(SettingsWidget, {
7155
7206
  SaveButton
7156
7207
  });
7157
7208
  // src/core/components/SettingsWidget/SettingsTable/index.tsx
7158
- var import_react14 = require("react");
7209
+ var import_react15 = require("react");
7159
7210
  var import_core22 = require("@mantine/core");
7160
7211
 
7161
7212
  // src/core/components/SettingsWidget/SettingsTable/Row/index.tsx
@@ -7188,15 +7239,16 @@ var jsx_dev_runtime30 = require("react/jsx-dev-runtime");
7188
7239
  var defaultSettingsTableOptions = {
7189
7240
  leftColumnWidth: "38.2%"
7190
7241
  };
7191
- var settingsTableOptionsContext = import_react14.createContext(defaultSettingsTableOptions);
7242
+ var settingsTableOptionsContext = import_react15.createContext(defaultSettingsTableOptions);
7192
7243
  var useSettingsTableOptions = () => {
7193
- return import_react14.useContext(settingsTableOptionsContext);
7244
+ return import_react15.useContext(settingsTableOptionsContext);
7194
7245
  };
7195
7246
  function SettingsTable({
7196
- children,
7197
- leftColumnWidth
7247
+ leftColumnWidth,
7248
+ children: childrenProp
7198
7249
  }) {
7199
7250
  const theme = useRemoraidTheme();
7251
+ const children = asChildrenOfType(Row, childrenProp, "Check children passed to 'SettingsTable' component.");
7200
7252
  return /* @__PURE__ */ jsx_dev_runtime30.jsxDEV(settingsTableOptionsContext.Provider, {
7201
7253
  value: {
7202
7254
  leftColumnWidth: leftColumnWidth ?? defaultSettingsTableOptions.leftColumnWidth
@@ -7216,7 +7268,6 @@ var SettingsTable_default = Object.assign(SettingsTable, {
7216
7268
  Row
7217
7269
  });
7218
7270
  // src/core/components/NavbarSettingsWidget/index.tsx
7219
- var import_react15 = require("react");
7220
7271
  var import_lodash = __toESM(require_lodash());
7221
7272
  var import_core23 = require("@mantine/core");
7222
7273
  var import_icons_react9 = require("@tabler/icons-react");
@@ -7244,6 +7295,7 @@ function NavbarSettingsWidget({
7244
7295
  },
7245
7296
  custom: !import_lodash.isEqual(userExperience.navbar, initialUserExperience.navbar),
7246
7297
  children: /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(SettingsTable_default, {
7298
+ ...componentsProps?.table,
7247
7299
  children: [
7248
7300
  /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(SettingsTable_default.Row, {
7249
7301
  label: "Select which pages you want to display or hide",
@@ -7274,9 +7326,57 @@ function NavbarSettingsWidget({
7274
7326
  }, undefined, false, undefined, this)
7275
7327
  }, undefined, false, undefined, this)
7276
7328
  }, "select-hidden-pages", false, undefined, this),
7277
- ...(additionalRows ?? []).map((row, i) => row.key ? row : import_react15.cloneElement(row, { key: i }))
7278
- ],
7279
- ...componentsProps?.table
7280
- }, undefined, false, undefined, this)
7329
+ additionalRows && additionalRows.map((row, i) => {
7330
+ if (isValidElementOfType(SettingsTable_default.Row, row)) {
7331
+ return row;
7332
+ }
7333
+ return /* @__PURE__ */ jsx_dev_runtime31.jsxDEV(SettingsTable_default.Row, {
7334
+ ...row
7335
+ }, i, false, undefined, this);
7336
+ })
7337
+ ]
7338
+ }, undefined, true, undefined, this)
7281
7339
  }, undefined, false, undefined, this);
7282
7340
  }
7341
+ // src/core/components/ContextClusterProvider/index.tsx
7342
+ var import_react16 = __toESM(require("react"));
7343
+ var jsx_dev_runtime32 = require("react/jsx-dev-runtime");
7344
+ var createContextCluster = (generalDefaultValue, staticIds) => {
7345
+ const isStaticId = (id) => {
7346
+ if (staticIds?.find((staticId) => staticId === id)) {
7347
+ return true;
7348
+ }
7349
+ return false;
7350
+ };
7351
+ const contexts = {};
7352
+ const defaultValues = {};
7353
+ const createContext8 = (id, defaultValue) => {
7354
+ const context = import_react16.default.createContext(defaultValue ?? generalDefaultValue);
7355
+ contexts[id] = context;
7356
+ defaultValues[id] = defaultValue ?? generalDefaultValue;
7357
+ return context;
7358
+ };
7359
+ const useContext11 = (id) => {
7360
+ if (isStaticId(id)) {
7361
+ return contexts[id] ? import_react16.default.useContext(contexts[id]) : generalDefaultValue;
7362
+ }
7363
+ return contexts[id] ? import_react16.default.useContext(contexts[id]) : null;
7364
+ };
7365
+ return {
7366
+ contexts,
7367
+ defaultValues,
7368
+ generalDefaultValue,
7369
+ createContext: createContext8,
7370
+ useContext: useContext11
7371
+ };
7372
+ };
7373
+ function ContextClusterProvider({
7374
+ cluster,
7375
+ values = {},
7376
+ children
7377
+ }) {
7378
+ return Object.entries(cluster.contexts).reduceRight((t, [id, context]) => /* @__PURE__ */ jsx_dev_runtime32.jsxDEV(context.Provider, {
7379
+ value: values[id] ?? cluster.defaultValues[id] ?? cluster.generalDefaultValue,
7380
+ children: t
7381
+ }, undefined, false, undefined, this), children);
7382
+ }