remoraid 2.7.2 → 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.
@@ -977,7 +977,7 @@ var require_lodash = __commonJS((exports, module) => {
977
977
  }
978
978
  SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
979
979
  SetCache.prototype.has = setCacheHas;
980
- function Stack2(entries) {
980
+ function Stack4(entries) {
981
981
  var data = this.__data__ = new ListCache(entries);
982
982
  this.size = data.size;
983
983
  }
@@ -1011,11 +1011,11 @@ var require_lodash = __commonJS((exports, module) => {
1011
1011
  this.size = data.size;
1012
1012
  return this;
1013
1013
  }
1014
- Stack2.prototype.clear = stackClear;
1015
- Stack2.prototype["delete"] = stackDelete;
1016
- Stack2.prototype.get = stackGet;
1017
- Stack2.prototype.has = stackHas;
1018
- Stack2.prototype.set = stackSet;
1014
+ Stack4.prototype.clear = stackClear;
1015
+ Stack4.prototype["delete"] = stackDelete;
1016
+ Stack4.prototype.get = stackGet;
1017
+ Stack4.prototype.has = stackHas;
1018
+ Stack4.prototype.set = stackSet;
1019
1019
  function arrayLikeKeys(value, inherited) {
1020
1020
  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;
1021
1021
  for (var key in value) {
@@ -1131,7 +1131,7 @@ var require_lodash = __commonJS((exports, module) => {
1131
1131
  result2 = initCloneByTag(value, tag, isDeep);
1132
1132
  }
1133
1133
  }
1134
- stack || (stack = new Stack2);
1134
+ stack || (stack = new Stack4);
1135
1135
  var stacked = stack.get(value);
1136
1136
  if (stacked) {
1137
1137
  return stacked;
@@ -1400,21 +1400,21 @@ var require_lodash = __commonJS((exports, module) => {
1400
1400
  objIsObj = false;
1401
1401
  }
1402
1402
  if (isSameTag && !objIsObj) {
1403
- stack || (stack = new Stack2);
1403
+ stack || (stack = new Stack4);
1404
1404
  return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
1405
1405
  }
1406
1406
  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
1407
1407
  var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
1408
1408
  if (objIsWrapped || othIsWrapped) {
1409
1409
  var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
1410
- stack || (stack = new Stack2);
1410
+ stack || (stack = new Stack4);
1411
1411
  return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
1412
1412
  }
1413
1413
  }
1414
1414
  if (!isSameTag) {
1415
1415
  return false;
1416
1416
  }
1417
- stack || (stack = new Stack2);
1417
+ stack || (stack = new Stack4);
1418
1418
  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
1419
1419
  }
1420
1420
  function baseIsMap(value) {
@@ -1440,7 +1440,7 @@ var require_lodash = __commonJS((exports, module) => {
1440
1440
  return false;
1441
1441
  }
1442
1442
  } else {
1443
- var stack = new Stack2;
1443
+ var stack = new Stack4;
1444
1444
  if (customizer) {
1445
1445
  var result2 = customizer(objValue, srcValue, key, object, source, stack);
1446
1446
  }
@@ -1536,7 +1536,7 @@ var require_lodash = __commonJS((exports, module) => {
1536
1536
  return;
1537
1537
  }
1538
1538
  baseFor(source, function(srcValue, key) {
1539
- stack || (stack = new Stack2);
1539
+ stack || (stack = new Stack4);
1540
1540
  if (isObject(srcValue)) {
1541
1541
  baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
1542
1542
  } else {
@@ -5573,6 +5573,10 @@ var NavbarVariant;
5573
5573
  ((NavbarVariant2) => {
5574
5574
  NavbarVariant2["Minimal"] = "minimal";
5575
5575
  })(NavbarVariant ||= {});
5576
+ var FooterVariant;
5577
+ ((FooterVariant2) => {
5578
+ FooterVariant2["Minimal"] = "minimal";
5579
+ })(FooterVariant ||= {});
5576
5580
  var AlertCategory;
5577
5581
  ((AlertCategory2) => {
5578
5582
  AlertCategory2["Negative"] = "negative";
@@ -5595,9 +5599,62 @@ var RemoraidIconSize;
5595
5599
  RemoraidIconSize2["Tiny"] = "tiny";
5596
5600
  RemoraidIconSize2["Medium"] = "medium";
5597
5601
  })(RemoraidIconSize ||= {});
5602
+ var LayoutType;
5603
+ ((LayoutType2) => {
5604
+ LayoutType2["Frame"] = "frame";
5605
+ })(LayoutType ||= {});
5606
+ var FrameLayoutSection;
5607
+ ((FrameLayoutSection2) => {
5608
+ FrameLayoutSection2["Top"] = "top";
5609
+ FrameLayoutSection2["Bottom"] = "bottom";
5610
+ FrameLayoutSection2["Left"] = "left";
5611
+ FrameLayoutSection2["Right"] = "right";
5612
+ FrameLayoutSection2["Content"] = "content";
5613
+ })(FrameLayoutSection ||= {});
5614
+ var FrameLayoutVariant;
5615
+ ((FrameLayoutVariant2) => {
5616
+ FrameLayoutVariant2["Plain"] = "plain";
5617
+ FrameLayoutVariant2["Sticky"] = "sticky";
5618
+ })(FrameLayoutVariant ||= {});
5598
5619
 
5599
5620
  // src/core/lib/utils.ts
5621
+ import {
5622
+ isValidElement
5623
+ } from "react";
5600
5624
  var co = (condition, value, fallback) => condition(value) ? value : fallback;
5625
+ var isValidElementOfType = (type, value) => {
5626
+ return isValidElement(value) && value.type === type;
5627
+ };
5628
+ var getElementTypeName = (type) => {
5629
+ if (typeof type === "string") {
5630
+ return type;
5631
+ }
5632
+ if (typeof type === "function") {
5633
+ return type.displayName ?? type.name ?? "anonymous component";
5634
+ }
5635
+ return "unknown";
5636
+ };
5637
+ var asElementOfType = (type, element, additionalErrorMessage) => {
5638
+ if (isValidElementOfType(type, element)) {
5639
+ return element;
5640
+ }
5641
+ throw new TypeError(`Expected React element of type ${getElementTypeName(type)}, but received type: ${getElementTypeName(element.type)}.${additionalErrorMessage !== undefined && additionalErrorMessage.length > 0 ? ` ${additionalErrorMessage}` : ""}`);
5642
+ };
5643
+ var asChildrenOfType = (type, children, additionalErrorMessage) => {
5644
+ if (children === undefined || children === null) {
5645
+ return children;
5646
+ }
5647
+ if (Array.isArray(children)) {
5648
+ return children.map((child) => asChildrenOfType(type, child, additionalErrorMessage));
5649
+ }
5650
+ return asElementOfType(type, children, additionalErrorMessage);
5651
+ };
5652
+ var asElementOrPropsOfType = (type, elementOrProps, additionalErrorMessage) => {
5653
+ if (isValidElement(elementOrProps)) {
5654
+ return asElementOfType(type, elementOrProps, additionalErrorMessage);
5655
+ }
5656
+ return elementOrProps;
5657
+ };
5601
5658
 
5602
5659
  // src/core/components/RemoraidProvider/ThemeProvider/index.tsx
5603
5660
  import {
@@ -5774,18 +5831,171 @@ function ThemeProvider({
5774
5831
  import { CookiesProvider } from "react-cookie";
5775
5832
 
5776
5833
  // src/core/components/RemoraidProvider/CoreUserExperienceProvider/index.tsx
5777
- import { useContext as useContext5 } from "react";
5834
+ import { useContext as useContext4 } from "react";
5835
+
5836
+ // src/core/components/UserExperienceProviderWrapper/index.tsx
5837
+ import {
5838
+ createContext as createContext2,
5839
+ useEffect as useEffect2,
5840
+ useState as useState3
5841
+ } from "react";
5842
+ import { useCookies } from "react-cookie";
5843
+ import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
5844
+ var createUserExperienceContext = (defaultUserExperience) => createContext2({
5845
+ userExperience: defaultUserExperience,
5846
+ updateUserExperience: () => {},
5847
+ processedCookie: false,
5848
+ initialUserExperience: defaultUserExperience
5849
+ });
5850
+ function UserExperienceProviderWrapper({
5851
+ children,
5852
+ context,
5853
+ cookieName,
5854
+ defaultUserExperience,
5855
+ isValidUserExperience,
5856
+ initialValue
5857
+ }) {
5858
+ const [cookies, setCookie] = useCookies();
5859
+ let initialUserExperience = defaultUserExperience;
5860
+ if (typeof initialValue === "object" && typeof initialUserExperience === "object") {
5861
+ initialUserExperience = { ...initialUserExperience, ...initialValue };
5862
+ }
5863
+ const [userExperience, setUserExperience] = useState3(initialUserExperience);
5864
+ const [processedCookie, setProcessedCookie] = useState3(false);
5865
+ const updateUserExperience = (p) => {
5866
+ const updatedUserExperience = typeof p === "function" ? p(userExperience) : p;
5867
+ setCookie(cookieName, updatedUserExperience, { path: "/" });
5868
+ setUserExperience(updatedUserExperience);
5869
+ };
5870
+ useEffect2(() => {
5871
+ const userExperienceCookie = cookies[cookieName];
5872
+ if (userExperienceCookie && isValidUserExperience(userExperienceCookie)) {
5873
+ setUserExperience(userExperienceCookie);
5874
+ }
5875
+ if (cookies && !processedCookie) {
5876
+ setProcessedCookie(true);
5877
+ }
5878
+ }, [cookies]);
5879
+ return /* @__PURE__ */ jsxDEV4(context.Provider, {
5880
+ value: {
5881
+ userExperience,
5882
+ updateUserExperience,
5883
+ processedCookie,
5884
+ initialUserExperience
5885
+ },
5886
+ children
5887
+ }, undefined, false, undefined, this);
5888
+ }
5889
+
5890
+ // src/core/components/RemoraidProvider/CoreUserExperienceProvider/index.tsx
5891
+ import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
5892
+ var defaultUserExperience = {
5893
+ showWelcomeMessage: true,
5894
+ navbar: { hiddenPages: [] }
5895
+ };
5896
+ var defaultUserExperienceCookieName = "remoraid-core-user-experience";
5897
+ var coreUserExperienceContext = createUserExperienceContext(defaultUserExperience);
5898
+ var useRemoraidUserExperience = () => {
5899
+ return useContext4(coreUserExperienceContext);
5900
+ };
5901
+ function CoreUserExperienceProvider({
5902
+ children,
5903
+ initialValue,
5904
+ cookieName
5905
+ }) {
5906
+ const isValidUserExperience = (x) => {
5907
+ if (typeof x !== "object") {
5908
+ return false;
5909
+ }
5910
+ if (x === null) {
5911
+ return false;
5912
+ }
5913
+ if (!("showWelcomeMessage" in x)) {
5914
+ return false;
5915
+ }
5916
+ if (!("navbar" in x)) {
5917
+ return false;
5918
+ }
5919
+ return true;
5920
+ };
5921
+ return /* @__PURE__ */ jsxDEV5(UserExperienceProviderWrapper, {
5922
+ context: coreUserExperienceContext,
5923
+ isValidUserExperience,
5924
+ cookieName: cookieName ?? defaultUserExperienceCookieName,
5925
+ defaultUserExperience,
5926
+ initialValue,
5927
+ children
5928
+ }, undefined, false, undefined, this);
5929
+ }
5930
+
5931
+ // src/core/components/RemoraidProvider/LayoutsProvider/index.tsx
5932
+ import {
5933
+ createContext as createContext3,
5934
+ useContext as useContext5,
5935
+ useState as useState4
5936
+ } from "react";
5937
+ import { jsxDEV as jsxDEV6 } from "react/jsx-dev-runtime";
5938
+ var defaultLayoutsContext = {
5939
+ layouts: {},
5940
+ setLayouts: () => {}
5941
+ };
5942
+ var layoutsContext = createContext3(defaultLayoutsContext);
5943
+ var useLayouts = () => {
5944
+ return useContext5(layoutsContext);
5945
+ };
5946
+ function LayoutsProvider({
5947
+ children
5948
+ }) {
5949
+ const [layouts, setLayouts] = useState4({});
5950
+ return /* @__PURE__ */ jsxDEV6(layoutsContext.Provider, {
5951
+ value: { layouts, setLayouts },
5952
+ children
5953
+ }, undefined, false, undefined, this);
5954
+ }
5955
+
5956
+ // src/core/components/RemoraidProvider/index.tsx
5957
+ import { jsxDEV as jsxDEV7 } from "react/jsx-dev-runtime";
5958
+ function RemoraidProvider({
5959
+ children,
5960
+ theme,
5961
+ initialUserExperience,
5962
+ componentsProps
5963
+ }) {
5964
+ return /* @__PURE__ */ jsxDEV7(CookiesProvider, {
5965
+ ...componentsProps?.CookiesProvider,
5966
+ children: /* @__PURE__ */ jsxDEV7(HydrationStatusProvider, {
5967
+ ...componentsProps?.HydrationStatusProviderProps,
5968
+ children: /* @__PURE__ */ jsxDEV7(ThemeProvider, {
5969
+ theme,
5970
+ ...componentsProps?.ThemeProvider,
5971
+ children: /* @__PURE__ */ jsxDEV7(CoreUserExperienceProvider, {
5972
+ initialValue: initialUserExperience,
5973
+ ...componentsProps?.CoreUserExperienceProvider,
5974
+ children: /* @__PURE__ */ jsxDEV7(WidgetsProvider, {
5975
+ ...componentsProps?.WidgetsProvider,
5976
+ children: /* @__PURE__ */ jsxDEV7(LayoutsProvider, {
5977
+ ...componentsProps?.LayoutsProviderProps,
5978
+ children
5979
+ }, undefined, false, undefined, this)
5980
+ }, undefined, false, undefined, this)
5981
+ }, undefined, false, undefined, this)
5982
+ }, undefined, false, undefined, this)
5983
+ }, undefined, false, undefined, this)
5984
+ }, undefined, false, undefined, this);
5985
+ }
5986
+ // src/core/components/AppShell/index.tsx
5987
+ import { Box as Box3 } from "@mantine/core";
5778
5988
 
5779
5989
  // src/core/components/AppShell/NavbarMinimal/index.tsx
5780
5990
  import {
5781
5991
  Tooltip,
5782
5992
  UnstyledButton,
5783
5993
  Stack,
5784
- rem,
5785
5994
  Flex,
5786
5995
  Paper,
5787
5996
  Divider,
5788
- Indicator
5997
+ Indicator,
5998
+ rem
5789
5999
  } from "@mantine/core";
5790
6000
  import {
5791
6001
  IconLink,
@@ -5796,78 +6006,80 @@ import {
5796
6006
  } from "@tabler/icons-react";
5797
6007
  import Link from "next/link";
5798
6008
  import { usePathname } from "next/navigation";
5799
- import { useState as useState3 } from "react";
6009
+ import { useState as useState5 } from "react";
5800
6010
 
5801
6011
  // src/core/components/AppShell/AppProvider/index.tsx
5802
- import { createContext as createContext2, useContext as useContext4 } from "react";
5803
- import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
5804
- var defaultAppContext = { navigablePages: [] };
5805
- var appContext = createContext2(defaultAppContext);
6012
+ import { createContext as createContext4, useContext as useContext6 } from "react";
6013
+ import { jsxDEV as jsxDEV8 } from "react/jsx-dev-runtime";
6014
+ var defaultAppContext = {
6015
+ navigablePages: []
6016
+ };
6017
+ var appContext = createContext4(defaultAppContext);
5806
6018
  var useRemoraidApp = () => {
5807
- return useContext4(appContext);
6019
+ return useContext6(appContext);
5808
6020
  };
5809
6021
  function AppProvider({
5810
- children,
5811
- navigablePages,
5812
- user
6022
+ appContext: appContextProps,
6023
+ children
5813
6024
  }) {
5814
- return /* @__PURE__ */ jsxDEV4(appContext.Provider, {
5815
- value: { navigablePages, user },
6025
+ return /* @__PURE__ */ jsxDEV8(appContext.Provider, {
6026
+ value: { ...appContextProps },
5816
6027
  children
5817
6028
  }, undefined, false, undefined, this);
5818
6029
  }
5819
6030
 
5820
6031
  // src/core/components/AppShell/NavbarMinimal/index.tsx
5821
- import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
6032
+ import { jsxDEV as jsxDEV9, Fragment } from "react/jsx-dev-runtime";
5822
6033
  function NavbarLink({
5823
6034
  icon,
6035
+ linkSize,
6036
+ iconSize,
5824
6037
  label,
5825
6038
  active,
5826
6039
  onClick,
5827
6040
  href,
5828
- indicator,
5829
- settings
6041
+ indicator
5830
6042
  }) {
5831
- const [isHoveringRoleIndicator, setIsHoveringRoleIndicator] = useState3(false);
6043
+ const [isHoveringRoleIndicator, setIsHoveringRoleIndicator] = useState5(false);
5832
6044
  const iconProps = {
5833
- size: settings.iconSize,
6045
+ size: iconSize,
5834
6046
  stroke: 1.5
5835
6047
  };
5836
6048
  const Icon2 = icon ?? IconLink;
5837
6049
  if (!href) {
5838
- return /* @__PURE__ */ jsxDEV5(Tooltip, {
6050
+ return /* @__PURE__ */ jsxDEV9(Tooltip, {
5839
6051
  label,
5840
6052
  position: "right",
5841
6053
  transitionProps: { duration: 0 },
5842
- children: /* @__PURE__ */ jsxDEV5(UnstyledButton, {
6054
+ children: /* @__PURE__ */ jsxDEV9(UnstyledButton, {
5843
6055
  onClick,
5844
6056
  className: "remoraid-navbar-minimal-link",
5845
6057
  "data-active": active || undefined,
5846
- w: settings.linkSize,
5847
- h: settings.linkSize,
5848
- children: /* @__PURE__ */ jsxDEV5(Icon2, {
6058
+ w: linkSize,
6059
+ h: linkSize,
6060
+ children: /* @__PURE__ */ jsxDEV9(Icon2, {
5849
6061
  ...iconProps
5850
6062
  }, undefined, false, undefined, this)
5851
6063
  }, undefined, false, undefined, this)
5852
6064
  }, undefined, false, undefined, this);
5853
6065
  }
5854
- const button = /* @__PURE__ */ jsxDEV5(UnstyledButton, {
6066
+ const button = /* @__PURE__ */ jsxDEV9(UnstyledButton, {
5855
6067
  onClick,
5856
6068
  className: "remoraid-navbar-minimal-link",
5857
6069
  "data-active": active || undefined,
5858
- w: settings.linkSize,
5859
- h: settings.linkSize,
6070
+ w: linkSize,
6071
+ h: linkSize,
5860
6072
  component: Link,
5861
6073
  href,
5862
- children: /* @__PURE__ */ jsxDEV5(Icon2, {
6074
+ children: /* @__PURE__ */ jsxDEV9(Icon2, {
5863
6075
  ...iconProps
5864
6076
  }, undefined, false, undefined, this)
5865
6077
  }, undefined, false, undefined, this);
5866
- return /* @__PURE__ */ jsxDEV5(Tooltip, {
6078
+ return /* @__PURE__ */ jsxDEV9(Tooltip, {
5867
6079
  label,
5868
6080
  position: "right",
5869
6081
  transitionProps: { duration: 0 },
5870
- children: indicator === undefined ? button : /* @__PURE__ */ jsxDEV5(Indicator, {
6082
+ children: indicator === undefined ? button : /* @__PURE__ */ jsxDEV9(Indicator, {
5871
6083
  withBorder: true,
5872
6084
  size: 13,
5873
6085
  offset: 2,
@@ -5878,98 +6090,94 @@ function NavbarLink({
5878
6090
  }, undefined, false, undefined, this)
5879
6091
  }, undefined, false, undefined, this);
5880
6092
  }
5881
- var defaultSettings = {
5882
- hiddenPages: [],
5883
- linkSize: rem("50px"),
5884
- iconSize: "50%",
5885
- px: "sm",
5886
- py: "md"
5887
- };
5888
6093
  function NavbarMinimal({
5889
- logo,
5890
- user,
5891
- settings: settingsProp,
6094
+ linkSize = rem("50px"),
6095
+ iconSize = "50%",
5892
6096
  linkIndicator,
5893
6097
  logoIndicator,
5894
- onLogout
6098
+ componentsProps
5895
6099
  }) {
5896
- const { userExperience } = useRemoraidUserExperience();
5897
6100
  const pathname = usePathname();
5898
6101
  const theme = useRemoraidTheme();
5899
6102
  const { setColorScheme, colorScheme } = useHydratedMantineColorScheme();
5900
- const app = useRemoraidApp();
5901
- const [isHoveringRoleIndicator, setIsHoveringRoleIndicator] = useState3(false);
5902
- const settings = {
5903
- ...userExperience.navbarSettings,
5904
- ...settingsProp
6103
+ const { userExperience } = useRemoraidUserExperience();
6104
+ const { navigablePages, logo, auth } = useRemoraidApp();
6105
+ const [isHoveringRoleIndicator, setIsHoveringRoleIndicator] = useState5(false);
6106
+ const linkProps = {
6107
+ linkSize,
6108
+ iconSize,
6109
+ ...componentsProps?.link
5905
6110
  };
5906
- const links = app.navigablePages.filter((link) => !settings.hiddenPages.includes(link.href)).map((link) => /* @__PURE__ */ jsxDEV5(NavbarLink, {
6111
+ const links = navigablePages.filter((link) => !userExperience.navbar.hiddenPages.includes(link.href)).map((link) => /* @__PURE__ */ jsxDEV9(NavbarLink, {
5907
6112
  active: link.href === pathname,
5908
6113
  indicator: linkIndicator,
5909
- settings,
5910
- ...link
6114
+ ...link,
6115
+ ...linkProps
5911
6116
  }, link.label, false, undefined, this));
5912
- const logoImage = logo({
6117
+ const logoProps = {
5913
6118
  style: {
5914
6119
  cursor: "pointer",
5915
- width: settings.linkSize,
5916
- height: settings.linkSize
6120
+ width: linkSize,
6121
+ height: linkSize
5917
6122
  }
5918
- });
5919
- return /* @__PURE__ */ jsxDEV5(Paper, {
6123
+ };
6124
+ return /* @__PURE__ */ jsxDEV9(Paper, {
5920
6125
  h: "100%",
5921
- py: settings.py,
5922
- bg: theme.transparentBackground,
5923
- radius: 0,
6126
+ p: "md",
5924
6127
  shadow: "md",
5925
- children: /* @__PURE__ */ jsxDEV5(Flex, {
6128
+ bg: theme.transparentBackground,
6129
+ ...componentsProps?.container,
6130
+ children: /* @__PURE__ */ jsxDEV9(Flex, {
5926
6131
  direction: "column",
5927
6132
  h: "100%",
5928
6133
  align: "center",
5929
- px: settings.px,
5930
6134
  children: [
5931
- logoIndicator === undefined ? logoImage : /* @__PURE__ */ jsxDEV5(Indicator, {
5932
- withBorder: true,
5933
- offset: 2,
5934
- size: 13,
5935
- onMouseEnter: () => setIsHoveringRoleIndicator(true),
5936
- onMouseLeave: () => setIsHoveringRoleIndicator(false),
5937
- ...logoIndicator(isHoveringRoleIndicator),
5938
- children: logoImage
5939
- }, undefined, false, undefined, this),
5940
- /* @__PURE__ */ jsxDEV5(Divider, {
5941
- my: "md",
5942
- variant: "dashed",
5943
- w: "100%"
5944
- }, undefined, false, undefined, this),
5945
- /* @__PURE__ */ jsxDEV5(Stack, {
6135
+ logo !== undefined && /* @__PURE__ */ jsxDEV9(Fragment, {
6136
+ children: [
6137
+ logoIndicator === undefined ? logo(logoProps) : /* @__PURE__ */ jsxDEV9(Indicator, {
6138
+ withBorder: true,
6139
+ offset: 2,
6140
+ size: 13,
6141
+ onMouseEnter: () => setIsHoveringRoleIndicator(true),
6142
+ onMouseLeave: () => setIsHoveringRoleIndicator(false),
6143
+ ...logoIndicator(isHoveringRoleIndicator),
6144
+ children: logo(logoProps)
6145
+ }, undefined, false, undefined, this),
6146
+ /* @__PURE__ */ jsxDEV9(Divider, {
6147
+ my: "md",
6148
+ variant: "dashed",
6149
+ w: "100%"
6150
+ }, undefined, false, undefined, this)
6151
+ ]
6152
+ }, undefined, true, undefined, this),
6153
+ /* @__PURE__ */ jsxDEV9(Stack, {
5946
6154
  justify: "flex-start",
5947
6155
  gap: 0,
5948
6156
  flex: 1,
5949
6157
  children: links
5950
6158
  }, undefined, false, undefined, this),
5951
- /* @__PURE__ */ jsxDEV5(Stack, {
6159
+ /* @__PURE__ */ jsxDEV9(Stack, {
5952
6160
  justify: "center",
5953
6161
  gap: 0,
5954
6162
  children: [
5955
- user !== undefined && (user === null ? /* @__PURE__ */ jsxDEV5(NavbarLink, {
6163
+ auth !== undefined && (auth.user === null ? /* @__PURE__ */ jsxDEV9(NavbarLink, {
5956
6164
  icon: IconLogin,
5957
6165
  label: "Login",
5958
6166
  href: "/login",
5959
6167
  active: pathname === "/login",
5960
- settings
5961
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV5(NavbarLink, {
6168
+ ...linkProps
6169
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV9(NavbarLink, {
5962
6170
  icon: IconLogout,
5963
6171
  label: "Logout",
5964
6172
  onClick: () => {
5965
- if (onLogout) {
5966
- onLogout();
6173
+ if (auth.onLogout) {
6174
+ auth.onLogout();
5967
6175
  }
5968
6176
  },
5969
6177
  href: "/login",
5970
- settings
6178
+ ...linkProps
5971
6179
  }, undefined, false, undefined, this)),
5972
- /* @__PURE__ */ jsxDEV5(NavbarLink, {
6180
+ /* @__PURE__ */ jsxDEV9(NavbarLink, {
5973
6181
  icon: colorScheme === "dark" ? IconSun : IconMoon,
5974
6182
  onClick: () => {
5975
6183
  if (!colorScheme || !setColorScheme) {
@@ -5978,7 +6186,7 @@ function NavbarMinimal({
5978
6186
  setColorScheme(colorScheme === "dark" ? "light" : "dark");
5979
6187
  },
5980
6188
  label: "Toggle Color Scheme",
5981
- settings
6189
+ ...linkProps
5982
6190
  }, undefined, false, undefined, this)
5983
6191
  ]
5984
6192
  }, undefined, true, undefined, this)
@@ -5987,274 +6195,336 @@ function NavbarMinimal({
5987
6195
  }, undefined, false, undefined, this);
5988
6196
  }
5989
6197
 
5990
- // src/core/components/UserExperienceProviderWrapper/index.tsx
5991
- import {
5992
- createContext as createContext3,
5993
- useEffect as useEffect2,
5994
- useState as useState4
5995
- } from "react";
5996
- import { useCookies } from "react-cookie";
5997
- import { jsxDEV as jsxDEV6 } from "react/jsx-dev-runtime";
5998
- var createUserExperienceContext = (defaultUserExperience) => createContext3({
5999
- userExperience: defaultUserExperience,
6000
- updateUserExperience: () => {},
6001
- processedCookie: false,
6002
- initialUserExperience: defaultUserExperience
6003
- });
6004
- function UserExperienceProviderWrapper({
6005
- children,
6006
- context,
6007
- cookieName,
6008
- defaultUserExperience,
6009
- isValidUserExperience,
6010
- initialValue
6011
- }) {
6012
- const [cookies, setCookie] = useCookies();
6013
- const initialUserExperience = {
6014
- ...defaultUserExperience,
6015
- ...initialValue
6016
- };
6017
- const [userExperience, setUserExperience] = useState4(initialUserExperience);
6018
- const [processedCookie, setProcessedCookie] = useState4(false);
6019
- const updateUserExperience = (p) => {
6020
- const updatedUserExperience = typeof p === "function" ? p(userExperience) : p;
6021
- setCookie(cookieName, updatedUserExperience, { path: "/" });
6022
- setUserExperience(updatedUserExperience);
6023
- };
6024
- useEffect2(() => {
6025
- const userExperienceCookie = cookies[cookieName];
6026
- if (userExperienceCookie && isValidUserExperience(userExperienceCookie)) {
6027
- setUserExperience(userExperienceCookie);
6028
- }
6029
- if (cookies && !processedCookie) {
6030
- setProcessedCookie(true);
6031
- }
6032
- }, [cookies]);
6033
- return /* @__PURE__ */ jsxDEV6(context.Provider, {
6034
- value: {
6035
- userExperience,
6036
- updateUserExperience,
6037
- processedCookie,
6038
- initialUserExperience
6039
- },
6040
- children
6041
- }, undefined, false, undefined, this);
6042
- }
6043
-
6044
- // src/core/components/RemoraidProvider/CoreUserExperienceProvider/index.tsx
6045
- import { jsxDEV as jsxDEV7 } from "react/jsx-dev-runtime";
6046
- var defaultNavbarSettings = {
6047
- ["minimal" /* Minimal */]: defaultSettings
6048
- };
6049
- var defaultUserExperience = {
6050
- navbarVariant: "minimal" /* Minimal */,
6051
- navbarSettings: defaultNavbarSettings["minimal" /* Minimal */],
6052
- showWelcomeMessage: true
6053
- };
6054
- var defaultUserExperienceCookieName = "remoraid-core-user-experience";
6055
- var coreUserExperienceContext = createUserExperienceContext(defaultUserExperience);
6056
- var useRemoraidUserExperience = () => {
6057
- return useContext5(coreUserExperienceContext);
6058
- };
6059
- function CoreUserExperienceProvider({
6060
- children,
6061
- initialValue,
6062
- cookieName
6063
- }) {
6064
- const isValidUserExperience = (x) => {
6065
- if (typeof x !== "object") {
6066
- return false;
6067
- }
6068
- if (x === null) {
6069
- return false;
6070
- }
6071
- if (!("showWelcomeMessage" in x)) {
6072
- return false;
6073
- }
6074
- if (!("navbarVariant" in x)) {
6075
- return false;
6076
- }
6077
- if (!("navbarSettings" in x)) {
6078
- return false;
6079
- }
6080
- if (typeof x.navbarSettings !== "object") {
6081
- return false;
6082
- }
6083
- if (x.navbarSettings === null) {
6084
- return false;
6085
- }
6086
- if (!("hiddenPages" in x.navbarSettings)) {
6087
- return false;
6088
- }
6089
- if (!("linkSize" in x.navbarSettings)) {
6090
- return false;
6091
- }
6092
- if (!("px" in x.navbarSettings)) {
6093
- return false;
6094
- }
6095
- if (!("py" in x.navbarSettings)) {
6096
- return false;
6097
- }
6098
- return true;
6099
- };
6100
- return /* @__PURE__ */ jsxDEV7(UserExperienceProviderWrapper, {
6101
- context: coreUserExperienceContext,
6102
- isValidUserExperience,
6103
- cookieName: cookieName ?? defaultUserExperienceCookieName,
6104
- defaultUserExperience,
6105
- initialValue,
6106
- children
6107
- }, undefined, false, undefined, this);
6108
- }
6109
-
6110
- // src/core/components/RemoraidProvider/index.tsx
6111
- import { jsxDEV as jsxDEV8 } from "react/jsx-dev-runtime";
6112
- function RemoraidProvider({
6113
- children,
6114
- theme,
6115
- initialUserExperience,
6198
+ // src/core/components/AppShell/FooterMinimal/index.tsx
6199
+ import { Group } from "@mantine/core";
6200
+ import { IconPennant } from "@tabler/icons-react";
6201
+ import { jsxDEV as jsxDEV10 } from "react/jsx-dev-runtime";
6202
+ function FooterMinimal({
6116
6203
  componentsProps
6117
6204
  }) {
6118
- return /* @__PURE__ */ jsxDEV8(CookiesProvider, {
6119
- ...componentsProps?.CookiesProvider,
6120
- children: /* @__PURE__ */ jsxDEV8(HydrationStatusProvider, {
6121
- ...componentsProps?.HydrationStatusProviderProps,
6122
- children: /* @__PURE__ */ jsxDEV8(ThemeProvider, {
6123
- theme,
6124
- ...componentsProps?.ThemeProvider,
6125
- children: /* @__PURE__ */ jsxDEV8(CoreUserExperienceProvider, {
6126
- initialValue: initialUserExperience,
6127
- ...componentsProps?.CoreUserExperienceProvider,
6128
- children: /* @__PURE__ */ jsxDEV8(WidgetsProvider, {
6129
- ...componentsProps?.WidgetsProvider,
6130
- children
6131
- }, undefined, false, undefined, this)
6132
- }, undefined, false, undefined, this)
6133
- }, undefined, false, undefined, this)
6205
+ return /* @__PURE__ */ jsxDEV10(Group, {
6206
+ justify: "center",
6207
+ w: "100%",
6208
+ py: "md",
6209
+ ...componentsProps?.container,
6210
+ children: /* @__PURE__ */ jsxDEV10(IconPennant, {
6211
+ size: 50,
6212
+ color: "var(--mantine-color-default-border)",
6213
+ ...componentsProps?.icon
6134
6214
  }, undefined, false, undefined, this)
6135
6215
  }, undefined, false, undefined, this);
6136
6216
  }
6137
- // src/core/components/AppShell/index.tsx
6217
+
6218
+ // src/core/components/FrameLayout/index.tsx
6138
6219
  import {
6139
- AppShell as MantineAppShell,
6140
- Burger,
6141
- rem as rem2,
6220
+ Box as Box2,
6142
6221
  Group as Group2,
6143
- useMantineTheme as useMantineTheme2,
6144
- Paper as Paper2,
6145
- px as px2
6222
+ ScrollArea,
6223
+ Stack as Stack2
6146
6224
  } from "@mantine/core";
6147
- import { useDisclosure } from "@mantine/hooks";
6225
+ import {
6226
+ createContext as createContext5,
6227
+ useCallback,
6228
+ useContext as useContext7,
6229
+ useMemo as useMemo3
6230
+ } from "react";
6148
6231
 
6149
- // src/core/components/AppShell/Footer/index.tsx
6150
- import { Group } from "@mantine/core";
6151
- import { IconPennant } from "@tabler/icons-react";
6152
- import { jsxDEV as jsxDEV9 } from "react/jsx-dev-runtime";
6153
- function Footer() {
6154
- return /* @__PURE__ */ jsxDEV9(Group, {
6155
- justify: "center",
6156
- w: "100%",
6157
- py: "md",
6158
- children: /* @__PURE__ */ jsxDEV9(IconPennant, {
6159
- size: 50,
6160
- color: "var(--mantine-color-default-border)"
6161
- }, undefined, false, undefined, this)
6232
+ // src/core/components/FrameLayout/Element/index.tsx
6233
+ import { Box, Portal } from "@mantine/core";
6234
+ import { jsxDEV as jsxDEV11 } from "react/jsx-dev-runtime";
6235
+ function Element({
6236
+ section,
6237
+ includeContainer = true,
6238
+ layoutId,
6239
+ componentsProps,
6240
+ children
6241
+ }) {
6242
+ const { layouts } = useLayouts();
6243
+ const closestLayout = useFrameLayout();
6244
+ if (closestLayout.layoutId === null) {
6245
+ return null;
6246
+ }
6247
+ const layout = layouts[layoutId ?? closestLayout.layoutId];
6248
+ if (!isFrameLayout(layout)) {
6249
+ return null;
6250
+ }
6251
+ if (layout.sections[section] === null) {
6252
+ return null;
6253
+ }
6254
+ let containerProps = {};
6255
+ if (section === "left" /* Left */ || section === "right" /* Right */) {
6256
+ containerProps.h = "100%";
6257
+ }
6258
+ return /* @__PURE__ */ jsxDEV11(Portal, {
6259
+ target: layout.sections[section],
6260
+ children: includeContainer ? /* @__PURE__ */ jsxDEV11(Box, {
6261
+ ...containerProps,
6262
+ ...componentsProps?.container,
6263
+ children
6264
+ }, undefined, false, undefined, this) : children
6162
6265
  }, undefined, false, undefined, this);
6163
6266
  }
6164
6267
 
6165
- // src/core/components/AppShell/index.tsx
6166
- import { jsxDEV as jsxDEV10, Fragment } from "react/jsx-dev-runtime";
6167
- function AppShell({
6168
- children,
6169
- logo,
6170
- navbar,
6171
- user,
6172
- navigablePages
6268
+ // src/core/components/FrameLayout/index.tsx
6269
+ import { jsxDEV as jsxDEV12 } from "react/jsx-dev-runtime";
6270
+ var isFrameLayout = (layout) => {
6271
+ if (typeof layout !== "object" || layout === null) {
6272
+ return false;
6273
+ }
6274
+ if (!("sections" in layout)) {
6275
+ return false;
6276
+ }
6277
+ if (typeof layout.sections !== "object" || layout.sections === null) {
6278
+ return false;
6279
+ }
6280
+ return true;
6281
+ };
6282
+ var defaultFrameLayoutVariant = "sticky" /* Sticky */;
6283
+ var defaultFrameLayoutContext = {
6284
+ layoutId: null,
6285
+ layout: {
6286
+ sections: {
6287
+ ["top" /* Top */]: null,
6288
+ ["bottom" /* Bottom */]: null,
6289
+ ["left" /* Left */]: null,
6290
+ ["right" /* Right */]: null
6291
+ }
6292
+ },
6293
+ setLayout: () => {}
6294
+ };
6295
+ var layoutContext = createContext5(defaultFrameLayoutContext);
6296
+ var useFrameLayout = () => {
6297
+ return useContext7(layoutContext);
6298
+ };
6299
+ function FrameLayout({
6300
+ variant = defaultFrameLayoutVariant,
6301
+ layoutId,
6302
+ componentsProps,
6303
+ children
6173
6304
  }) {
6174
- const { userExperience } = useRemoraidUserExperience();
6175
- const mantineTheme = useMantineTheme2();
6176
6305
  const theme = useRemoraidTheme();
6177
- const { colorScheme } = useHydratedMantineColorScheme();
6178
- const [opened, { toggle }] = useDisclosure();
6179
- const navbarVariant = navbar && navbar.variant ? navbar.variant : userExperience.navbarVariant;
6180
- const navbarSettings = {
6181
- ...userExperience.navbarSettings,
6182
- ...navbar?.settings
6306
+ const { layouts, setLayouts } = useLayouts();
6307
+ const layout = layouts[layoutId];
6308
+ const setLayout = useMemo3(() => {
6309
+ return (value) => {
6310
+ setLayouts((prev) => ({
6311
+ ...prev,
6312
+ [layoutId]: typeof value === "function" ? value(prev[layoutId]) : value
6313
+ }));
6314
+ };
6315
+ }, [layoutId, setLayouts]);
6316
+ const topSection = useCallback((n) => {
6317
+ setLayout((prev) => ({
6318
+ ...prev,
6319
+ sections: { ...prev?.sections, ["top" /* Top */]: n }
6320
+ }));
6321
+ }, [setLayout]);
6322
+ const bottomSection = useCallback((n) => {
6323
+ setLayout((prev) => ({
6324
+ ...prev,
6325
+ sections: { ...prev?.sections, ["bottom" /* Bottom */]: n }
6326
+ }));
6327
+ }, [setLayout]);
6328
+ const leftSection = useCallback((n) => {
6329
+ setLayout((prev) => ({
6330
+ ...prev,
6331
+ sections: { ...prev?.sections, ["left" /* Left */]: n }
6332
+ }));
6333
+ }, [setLayout]);
6334
+ const rightSection = useCallback((n) => {
6335
+ setLayout((prev) => ({
6336
+ ...prev,
6337
+ sections: { ...prev?.sections, ["right" /* Right */]: n }
6338
+ }));
6339
+ }, [setLayout]);
6340
+ let contentSection = children;
6341
+ const childrenContainerProps = {
6342
+ flex: 1,
6343
+ ...componentsProps?.childrenContainer
6183
6344
  };
6184
- const navbarLinkSizePx = co((v) => !Number.isNaN(v), Number(px2(navbarSettings.linkSize)), 0);
6185
- const navbarPaddingPx = typeof navbarSettings.px === "number" ? navbarSettings.px : theme.spacingPx ? theme.spacingPx[navbarSettings.px] : 0;
6186
- return /* @__PURE__ */ jsxDEV10(AppProvider, {
6187
- user,
6188
- navigablePages,
6189
- children: /* @__PURE__ */ jsxDEV10(MantineAppShell, {
6190
- header: { height: 0 },
6191
- navbar: {
6192
- width: rem2(`${navbarLinkSizePx + 2 * navbarPaddingPx}px`),
6193
- breakpoint: "sm",
6194
- collapsed: { mobile: !opened }
6195
- },
6196
- bg: colorScheme === "dark" ? mantineTheme.colors.dark[9] : mantineTheme.colors.gray[0],
6345
+ if (variant === "plain" /* Plain */) {
6346
+ contentSection = /* @__PURE__ */ jsxDEV12(Box2, {
6347
+ ...childrenContainerProps,
6348
+ children: contentSection
6349
+ }, undefined, false, undefined, this);
6350
+ } else if (variant === "sticky" /* Sticky */) {
6351
+ contentSection = /* @__PURE__ */ jsxDEV12(ScrollArea, {
6352
+ ...theme.scrollAreaProps,
6353
+ ...childrenContainerProps,
6354
+ children
6355
+ }, undefined, false, undefined, this);
6356
+ }
6357
+ return /* @__PURE__ */ jsxDEV12(layoutContext.Provider, {
6358
+ value: { layoutId, layout, setLayout },
6359
+ children: /* @__PURE__ */ jsxDEV12(Group2, {
6360
+ gap: 0,
6361
+ h: "100%",
6362
+ w: "100%",
6363
+ wrap: "nowrap",
6364
+ ...componentsProps?.horizontalContainer,
6197
6365
  children: [
6198
- /* @__PURE__ */ jsxDEV10(MantineAppShell.Header, {
6199
- withBorder: false,
6200
- children: /* @__PURE__ */ jsxDEV10(Group2, {
6201
- p: "md",
6202
- bg: colorScheme === "dark" ? mantineTheme.colors.dark[8] : mantineTheme.colors.gray[3],
6203
- hiddenFrom: "sm",
6204
- children: /* @__PURE__ */ jsxDEV10(Burger, {
6205
- opened,
6206
- onClick: toggle,
6207
- h: 20,
6208
- size: 18
6209
- }, undefined, false, undefined, this)
6210
- }, undefined, false, undefined, this)
6211
- }, undefined, false, undefined, this),
6212
- /* @__PURE__ */ jsxDEV10(MantineAppShell.Navbar, {
6213
- withBorder: false,
6214
- children: navbarVariant === "minimal" /* Minimal */ && /* @__PURE__ */ jsxDEV10(NavbarMinimal, {
6215
- logo,
6216
- user,
6217
- ...navbar
6218
- }, undefined, false, undefined, this)
6366
+ /* @__PURE__ */ jsxDEV12(Group2, {
6367
+ ref: leftSection,
6368
+ h: "100%",
6369
+ gap: 0,
6370
+ wrap: "nowrap",
6371
+ ...componentsProps?.sectionContainers?.["left" /* Left */]
6219
6372
  }, undefined, false, undefined, this),
6220
- /* @__PURE__ */ jsxDEV10(MantineAppShell.Main, {
6221
- children: /* @__PURE__ */ jsxDEV10(Fragment, {
6222
- children: [
6223
- /* @__PURE__ */ jsxDEV10(Paper2, {
6224
- radius: 0,
6225
- my: "md",
6226
- h: 20,
6227
- hiddenFrom: "sm"
6228
- }, undefined, false, undefined, this),
6229
- children,
6230
- /* @__PURE__ */ jsxDEV10(Footer, {}, undefined, false, undefined, this)
6231
- ]
6232
- }, undefined, true, undefined, this)
6373
+ /* @__PURE__ */ jsxDEV12(Stack2, {
6374
+ h: "100%",
6375
+ flex: 1,
6376
+ gap: 0,
6377
+ ...componentsProps?.verticalContainer,
6378
+ children: [
6379
+ /* @__PURE__ */ jsxDEV12(Stack2, {
6380
+ h: "100%",
6381
+ ref: topSection,
6382
+ gap: 0,
6383
+ flex: 0,
6384
+ ...componentsProps?.sectionContainers?.["top" /* Top */]
6385
+ }, undefined, false, undefined, this),
6386
+ contentSection,
6387
+ /* @__PURE__ */ jsxDEV12(Stack2, {
6388
+ h: "100%",
6389
+ ref: bottomSection,
6390
+ gap: 0,
6391
+ flex: 0,
6392
+ ...componentsProps?.sectionContainers?.["bottom" /* Bottom */]
6393
+ }, undefined, false, undefined, this)
6394
+ ]
6395
+ }, undefined, true, undefined, this),
6396
+ /* @__PURE__ */ jsxDEV12(Group2, {
6397
+ gap: 0,
6398
+ ref: rightSection,
6399
+ h: "100%",
6400
+ wrap: "nowrap",
6401
+ ...componentsProps?.sectionContainers?.["right" /* Right */]
6233
6402
  }, undefined, false, undefined, this)
6234
6403
  ]
6235
6404
  }, undefined, true, undefined, this)
6236
6405
  }, undefined, false, undefined, this);
6237
6406
  }
6407
+ var FrameLayout_default = Object.assign(FrameLayout, {
6408
+ Element
6409
+ });
6410
+
6411
+ // src/core/components/AppShell/index.tsx
6412
+ import { jsxDEV as jsxDEV13, Fragment as Fragment2 } from "react/jsx-dev-runtime";
6413
+ var defaultAppShellLayoutId = "remoraidAppShell";
6414
+ var defaultAppShellNavbarPositions = { ["minimal" /* Minimal */]: "left" /* Left */ };
6415
+ var defaultAppShellFooterPositions = { ["minimal" /* Minimal */]: "content" /* Content */ };
6416
+ function AppShell(props) {
6417
+ const {
6418
+ children,
6419
+ navbarVariant,
6420
+ footerVariant,
6421
+ appContext: appContext2,
6422
+ componentsProps
6423
+ } = {
6424
+ navbarVariant: null,
6425
+ footerVariant: null,
6426
+ ...props
6427
+ };
6428
+ let { navbarPosition, footerPosition } = props;
6429
+ if (navbarVariant !== null && navbarPosition === undefined) {
6430
+ navbarPosition = defaultAppShellNavbarPositions[navbarVariant];
6431
+ }
6432
+ if (footerVariant !== null && footerPosition === undefined) {
6433
+ footerPosition = defaultAppShellFooterPositions[footerVariant];
6434
+ }
6435
+ let navbar;
6436
+ let footer;
6437
+ let navbarContainerProps = {};
6438
+ let footerContainerProps = {};
6439
+ if (navbarVariant === "minimal" /* Minimal */) {
6440
+ navbar = /* @__PURE__ */ jsxDEV13(NavbarMinimal, {
6441
+ ...componentsProps?.navbar
6442
+ }, undefined, false, undefined, this);
6443
+ navbarContainerProps.py = "md";
6444
+ if (navbarPosition === "left" /* Left */) {
6445
+ navbarContainerProps.pl = "md";
6446
+ } else if (navbarPosition === "right" /* Right */) {
6447
+ navbarContainerProps.pr = "md";
6448
+ }
6449
+ }
6450
+ if (footerVariant === "minimal" /* Minimal */) {
6451
+ footer = /* @__PURE__ */ jsxDEV13(FooterMinimal, {
6452
+ ...componentsProps?.footer
6453
+ }, undefined, false, undefined, this);
6454
+ }
6455
+ return /* @__PURE__ */ jsxDEV13(AppProvider, {
6456
+ appContext: appContext2,
6457
+ ...componentsProps?.AppProvider,
6458
+ children: /* @__PURE__ */ jsxDEV13(Box3, {
6459
+ h: "100vh",
6460
+ ...componentsProps?.container,
6461
+ children: /* @__PURE__ */ jsxDEV13(FrameLayout_default, {
6462
+ layoutId: defaultAppShellLayoutId,
6463
+ ...componentsProps?.layout,
6464
+ children: [
6465
+ navbarPosition !== undefined && navbarPosition !== "content" /* Content */ && /* @__PURE__ */ jsxDEV13(FrameLayout_default.Element, {
6466
+ section: navbarPosition,
6467
+ ...componentsProps?.navbarLayoutElement,
6468
+ componentsProps: {
6469
+ ...componentsProps?.navbarLayoutElement?.componentsProps,
6470
+ container: {
6471
+ ...navbarContainerProps,
6472
+ ...componentsProps?.navbarLayoutElement?.componentsProps?.container
6473
+ }
6474
+ },
6475
+ children: navbar
6476
+ }, undefined, false, undefined, this),
6477
+ footerPosition !== undefined && footerPosition !== "content" /* Content */ && /* @__PURE__ */ jsxDEV13(FrameLayout_default.Element, {
6478
+ section: footerPosition,
6479
+ ...componentsProps?.footerLayoutElement,
6480
+ componentsProps: {
6481
+ ...componentsProps?.footerLayoutElement?.componentsProps,
6482
+ container: {
6483
+ ...footerContainerProps,
6484
+ ...componentsProps?.footerLayoutElement?.componentsProps?.container
6485
+ }
6486
+ },
6487
+ children: footer
6488
+ }, undefined, false, undefined, this),
6489
+ navbarPosition !== undefined && navbarPosition === "content" /* Content */ && /* @__PURE__ */ jsxDEV13(Fragment2, {
6490
+ children: navbar
6491
+ }, undefined, false, undefined, this),
6492
+ /* @__PURE__ */ jsxDEV13(Box3, {
6493
+ ...componentsProps?.childrenContainer,
6494
+ children
6495
+ }, undefined, false, undefined, this),
6496
+ footerPosition !== undefined && footerPosition === "content" /* Content */ && /* @__PURE__ */ jsxDEV13(Fragment2, {
6497
+ children: footer
6498
+ }, undefined, false, undefined, this)
6499
+ ]
6500
+ }, undefined, true, undefined, this)
6501
+ }, undefined, false, undefined, this)
6502
+ }, undefined, false, undefined, this);
6503
+ }
6504
+ var AppShell_default = Object.assign(AppShell, {
6505
+ NavbarMinimal,
6506
+ FooterMinimal
6507
+ });
6238
6508
  // src/core/components/WidgetSelectionHeader/index.tsx
6239
6509
  import { Chip as Chip2, Divider as Divider2, Flex as Flex3, Text } from "@mantine/core";
6240
6510
 
6241
6511
  // src/core/components/Page/index.tsx
6242
6512
  import React6, {
6243
- useContext as useContext6,
6513
+ useContext as useContext8,
6244
6514
  useEffect as useEffect3
6245
6515
  } from "react";
6246
6516
  import { usePathname as usePathname2 } from "next/navigation";
6247
6517
 
6248
6518
  // src/core/components/Page/PageContainer/index.tsx
6249
6519
  import { Container } from "@mantine/core";
6250
- import { jsxDEV as jsxDEV11 } from "react/jsx-dev-runtime";
6520
+ import { jsxDEV as jsxDEV14 } from "react/jsx-dev-runtime";
6251
6521
  function PageContainer({
6252
6522
  children,
6253
6523
  pt,
6254
6524
  componentsProps
6255
6525
  }) {
6256
6526
  const theme = useRemoraidTheme();
6257
- return /* @__PURE__ */ jsxDEV11(Container, {
6527
+ return /* @__PURE__ */ jsxDEV14(Container, {
6258
6528
  size: theme.containerSize,
6259
6529
  pt: pt ?? "md",
6260
6530
  ...componentsProps?.container,
@@ -6263,10 +6533,10 @@ function PageContainer({
6263
6533
  }
6264
6534
 
6265
6535
  // src/core/components/Page/index.tsx
6266
- import { jsxDEV as jsxDEV12 } from "react/jsx-dev-runtime";
6536
+ import { jsxDEV as jsxDEV15 } from "react/jsx-dev-runtime";
6267
6537
  var pageContext = React6.createContext(null);
6268
6538
  var usePage = () => {
6269
- return useContext6(pageContext);
6539
+ return useContext8(pageContext);
6270
6540
  };
6271
6541
  function Page({
6272
6542
  children,
@@ -6285,9 +6555,9 @@ function Page({
6285
6555
  }
6286
6556
  }
6287
6557
  }, []);
6288
- return /* @__PURE__ */ jsxDEV12(pageContext.Provider, {
6558
+ return /* @__PURE__ */ jsxDEV15(pageContext.Provider, {
6289
6559
  value: { name: name ?? pathname, pageId, ...config },
6290
- children: /* @__PURE__ */ jsxDEV12(PageContainer, {
6560
+ children: /* @__PURE__ */ jsxDEV15(PageContainer, {
6291
6561
  pt,
6292
6562
  componentsProps: { container: componentsProps?.container },
6293
6563
  children
@@ -6302,9 +6572,9 @@ import { IconCheck } from "@tabler/icons-react";
6302
6572
  import {
6303
6573
  Chip,
6304
6574
  Flex as Flex2,
6305
- ScrollArea
6575
+ ScrollArea as ScrollArea2
6306
6576
  } from "@mantine/core";
6307
- import { jsxDEV as jsxDEV13 } from "react/jsx-dev-runtime";
6577
+ import { jsxDEV as jsxDEV16 } from "react/jsx-dev-runtime";
6308
6578
  function ScrollableChipGroup({
6309
6579
  value,
6310
6580
  onChange,
@@ -6313,15 +6583,15 @@ function ScrollableChipGroup({
6313
6583
  children
6314
6584
  }) {
6315
6585
  const theme = useRemoraidTheme();
6316
- return /* @__PURE__ */ jsxDEV13(ScrollArea, {
6586
+ return /* @__PURE__ */ jsxDEV16(ScrollArea2, {
6317
6587
  ...theme.scrollAreaProps,
6318
6588
  ...componentsProps?.scrollArea,
6319
- children: /* @__PURE__ */ jsxDEV13(Chip.Group, {
6589
+ children: /* @__PURE__ */ jsxDEV16(Chip.Group, {
6320
6590
  value,
6321
6591
  onChange,
6322
6592
  ...componentsProps?.chipGroup,
6323
6593
  multiple: true,
6324
- children: /* @__PURE__ */ jsxDEV13(Flex2, {
6594
+ children: /* @__PURE__ */ jsxDEV16(Flex2, {
6325
6595
  justify: "flex-start",
6326
6596
  align: "center",
6327
6597
  gap: gap ?? "xs",
@@ -6334,7 +6604,7 @@ function ScrollableChipGroup({
6334
6604
  }
6335
6605
 
6336
6606
  // src/core/components/WidgetSelectionHeader/index.tsx
6337
- import { jsxDEV as jsxDEV14 } from "react/jsx-dev-runtime";
6607
+ import { jsxDEV as jsxDEV17 } from "react/jsx-dev-runtime";
6338
6608
  function WidgetSelectionHeader({
6339
6609
  title,
6340
6610
  disabledWidgets,
@@ -6347,31 +6617,31 @@ function WidgetSelectionHeader({
6347
6617
  console.error("'WidgetSelectionHeader' must be rendered inside of a 'Page' component.");
6348
6618
  return null;
6349
6619
  }
6350
- return /* @__PURE__ */ jsxDEV14(Flex3, {
6620
+ return /* @__PURE__ */ jsxDEV17(Flex3, {
6351
6621
  justify: "flex-start",
6352
6622
  align: "center",
6353
6623
  gap: "xs",
6354
6624
  mt,
6355
6625
  children: [
6356
- /* @__PURE__ */ jsxDEV14(Text, {
6626
+ /* @__PURE__ */ jsxDEV17(Text, {
6357
6627
  size: "lg",
6358
6628
  fw: 400,
6359
6629
  children: title ?? page.name
6360
6630
  }, undefined, false, undefined, this),
6361
- /* @__PURE__ */ jsxDEV14(Divider2, {
6631
+ /* @__PURE__ */ jsxDEV17(Divider2, {
6362
6632
  orientation: "vertical"
6363
6633
  }, undefined, false, undefined, this),
6364
- isPageRegistered(page.pageId) && /* @__PURE__ */ jsxDEV14(ScrollableChipGroup, {
6634
+ isPageRegistered(page.pageId) && /* @__PURE__ */ jsxDEV17(ScrollableChipGroup, {
6365
6635
  value: Object.keys(widgets[page.pageId]).filter((widgetId) => widgets[page.pageId][widgetId].selected),
6366
6636
  onChange: (value) => {
6367
6637
  updateWidgetSelectionBulk(page.pageId, value);
6368
6638
  },
6369
6639
  componentsProps: { scrollArea: { flex: 1 } },
6370
- children: Object.keys(widgets[page.pageId]).map((widgetId) => /* @__PURE__ */ jsxDEV14(Chip2, {
6640
+ children: Object.keys(widgets[page.pageId]).map((widgetId) => /* @__PURE__ */ jsxDEV17(Chip2, {
6371
6641
  value: widgetId,
6372
6642
  size: "sm",
6373
6643
  disabled: disabledWidgets && disabledWidgets.includes(widgetId),
6374
- icon: /* @__PURE__ */ jsxDEV14(IconCheck, {
6644
+ icon: /* @__PURE__ */ jsxDEV17(IconCheck, {
6375
6645
  ...theme.iconProps.tiny
6376
6646
  }, undefined, false, undefined, this),
6377
6647
  children: widgets[page.pageId][widgetId].name
@@ -6383,17 +6653,17 @@ function WidgetSelectionHeader({
6383
6653
  // src/core/components/Widget/WidgetWrapper/CloseButton/index.tsx
6384
6654
  import { ActionIcon, Transition } from "@mantine/core";
6385
6655
  import { IconX } from "@tabler/icons-react";
6386
- import { jsxDEV as jsxDEV15 } from "react/jsx-dev-runtime";
6656
+ import { jsxDEV as jsxDEV18 } from "react/jsx-dev-runtime";
6387
6657
  function CloseButton({ widgetId }) {
6388
6658
  const theme = useRemoraidTheme();
6389
6659
  const { activeWidget, updateWidgetSelection } = useWidgets();
6390
6660
  const page = usePage();
6391
- return /* @__PURE__ */ jsxDEV15(Transition, {
6661
+ return /* @__PURE__ */ jsxDEV18(Transition, {
6392
6662
  mounted: activeWidget === widgetId,
6393
6663
  transition: "pop-top-right",
6394
6664
  duration: theme.transitionDurations.short,
6395
6665
  timingFunction: "ease",
6396
- children: (transitionStyle) => /* @__PURE__ */ jsxDEV15(ActionIcon, {
6666
+ children: (transitionStyle) => /* @__PURE__ */ jsxDEV18(ActionIcon, {
6397
6667
  pos: "absolute",
6398
6668
  size: "xs",
6399
6669
  className: "remoraid-close-button",
@@ -6406,7 +6676,7 @@ function CloseButton({ widgetId }) {
6406
6676
  updateWidgetSelection(page.pageId, widgetId, false);
6407
6677
  },
6408
6678
  style: transitionStyle,
6409
- children: /* @__PURE__ */ jsxDEV15(IconX, {
6679
+ children: /* @__PURE__ */ jsxDEV18(IconX, {
6410
6680
  ...theme.iconProps.tiny
6411
6681
  }, undefined, false, undefined, this)
6412
6682
  }, undefined, false, undefined, this)
@@ -6418,7 +6688,7 @@ import {
6418
6688
  Group as Group3,
6419
6689
  Tooltip as Tooltip3
6420
6690
  } from "@mantine/core";
6421
- import React7 from "react";
6691
+ import React7, { isValidElement as isValidElement2 } from "react";
6422
6692
 
6423
6693
  // src/core/components/BadgeMinimal/index.tsx
6424
6694
  import {
@@ -6426,30 +6696,21 @@ import {
6426
6696
  Tooltip as Tooltip2,
6427
6697
  Transition as Transition2
6428
6698
  } from "@mantine/core";
6429
- import { jsxDEV as jsxDEV16 } from "react/jsx-dev-runtime";
6430
- var isBadgeMinimalProps = (e) => {
6431
- if (typeof e !== "object") {
6432
- return false;
6433
- }
6434
- if (!("label" in e)) {
6435
- return false;
6436
- }
6437
- return true;
6438
- };
6699
+ import { jsxDEV as jsxDEV19 } from "react/jsx-dev-runtime";
6439
6700
  function BadgeMinimal(props) {
6440
6701
  const { label, tooltip, mounted, componentsProps } = props;
6441
6702
  const theme = useRemoraidTheme();
6442
- return /* @__PURE__ */ jsxDEV16(Transition2, {
6703
+ return /* @__PURE__ */ jsxDEV19(Transition2, {
6443
6704
  mounted: mounted !== false,
6444
6705
  transition: "fade",
6445
6706
  duration: theme.transitionDurations.short,
6446
6707
  timingFunction: "ease",
6447
6708
  ...componentsProps?.transition,
6448
- children: (transitionStyle) => /* @__PURE__ */ jsxDEV16(Tooltip2, {
6709
+ children: (transitionStyle) => /* @__PURE__ */ jsxDEV19(Tooltip2, {
6449
6710
  disabled: !tooltip,
6450
6711
  label: tooltip,
6451
6712
  ...componentsProps?.tooltip,
6452
- children: /* @__PURE__ */ jsxDEV16(Badge, {
6713
+ children: /* @__PURE__ */ jsxDEV19(Badge, {
6453
6714
  variant: "default",
6454
6715
  ...componentsProps?.badge,
6455
6716
  style: {
@@ -6464,36 +6725,39 @@ function BadgeMinimal(props) {
6464
6725
  }
6465
6726
 
6466
6727
  // src/core/components/BadgeGroup/index.tsx
6467
- import { jsxDEV as jsxDEV17, Fragment as Fragment2 } from "react/jsx-dev-runtime";
6728
+ import { jsxDEV as jsxDEV20, Fragment as Fragment3 } from "react/jsx-dev-runtime";
6468
6729
  import { createElement } from "react";
6469
6730
  function BadgeGroup({
6470
- badges,
6731
+ badges: badgesProp,
6471
6732
  gap,
6472
6733
  breakpoint,
6473
6734
  componentsProps
6474
6735
  }) {
6475
6736
  const theme = useRemoraidTheme();
6476
- const numVisibleBadges = badges.filter((e) => isBadgeMinimalProps(e) ? e.mounted !== false : true).length;
6477
- return /* @__PURE__ */ jsxDEV17(Fragment2, {
6737
+ const badges = badgesProp.map((badge) => asElementOrPropsOfType(BadgeMinimal, badge, "Check 'badges' property passed to 'BadgeGroup'."));
6738
+ const numVisibleBadges = badges.filter((badge) => isValidElementOfType(BadgeMinimal, badge) ? badge.props.mounted : badge.mounted !== false).length;
6739
+ return /* @__PURE__ */ jsxDEV20(Fragment3, {
6478
6740
  children: [
6479
- /* @__PURE__ */ jsxDEV17(Group3, {
6741
+ /* @__PURE__ */ jsxDEV20(Group3, {
6480
6742
  gap: gap ?? "xs",
6481
6743
  wrap: "nowrap",
6482
6744
  visibleFrom: breakpoint ?? theme.breakpoints.badgeGroupCollapse,
6483
- children: badges.map((e, i) => {
6484
- if (isBadgeMinimalProps(e)) {
6485
- return /* @__PURE__ */ createElement(BadgeMinimal, {
6486
- ...e,
6487
- key: i
6488
- });
6489
- }
6490
- return e;
6745
+ children: badges.map((badge, i) => {
6746
+ if (isValidElementOfType(BadgeMinimal, badge)) {
6747
+ return badge;
6748
+ } else if (isValidElement2(badge)) {
6749
+ 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.`);
6750
+ }
6751
+ return /* @__PURE__ */ createElement(BadgeMinimal, {
6752
+ ...badge,
6753
+ key: i
6754
+ });
6491
6755
  })
6492
6756
  }, undefined, false, undefined, this),
6493
- /* @__PURE__ */ jsxDEV17(Tooltip3, {
6757
+ /* @__PURE__ */ jsxDEV20(Tooltip3, {
6494
6758
  label: `${numVisibleBadges} badge${numVisibleBadges === 1 ? "" : "s"}`,
6495
6759
  ...componentsProps?.tooltip,
6496
- children: /* @__PURE__ */ jsxDEV17(Badge2, {
6760
+ children: /* @__PURE__ */ jsxDEV20(Badge2, {
6497
6761
  hiddenFrom: breakpoint ?? theme.breakpoints.badgeGroupCollapse,
6498
6762
  hidden: numVisibleBadges === 0,
6499
6763
  variant: "light",
@@ -6511,18 +6775,8 @@ import {
6511
6775
  Alert,
6512
6776
  Transition as Transition3
6513
6777
  } from "@mantine/core";
6514
- import { jsxDEV as jsxDEV18 } from "react/jsx-dev-runtime";
6515
- var isAlertMinimalProps = (e) => {
6516
- if (typeof e !== "object") {
6517
- return false;
6518
- }
6519
- if (!("category" in e)) {
6520
- return false;
6521
- }
6522
- return true;
6523
- };
6778
+ import { jsxDEV as jsxDEV21 } from "react/jsx-dev-runtime";
6524
6779
  function AlertMinimal({
6525
- children,
6526
6780
  title,
6527
6781
  category,
6528
6782
  text,
@@ -6530,16 +6784,17 @@ function AlertMinimal({
6530
6784
  mounted,
6531
6785
  mt,
6532
6786
  mb,
6533
- componentsProps
6787
+ componentsProps,
6788
+ children
6534
6789
  }) {
6535
6790
  const theme = useRemoraidTheme();
6536
- return /* @__PURE__ */ jsxDEV18(Transition3, {
6791
+ return /* @__PURE__ */ jsxDEV21(Transition3, {
6537
6792
  mounted: mounted !== false,
6538
6793
  transition: "fade",
6539
6794
  duration: theme.transitionDurations.short,
6540
6795
  timingFunction: "ease",
6541
6796
  ...componentsProps?.transition,
6542
- children: (transitionStyle) => /* @__PURE__ */ jsxDEV18(Alert, {
6797
+ children: (transitionStyle) => /* @__PURE__ */ jsxDEV21(Alert, {
6543
6798
  ...theme.alertProps[category],
6544
6799
  title: title ?? theme.alertProps[category].title,
6545
6800
  withCloseButton: onClose !== undefined,
@@ -6565,16 +6820,7 @@ import {
6565
6820
  Tooltip as Tooltip4
6566
6821
  } from "@mantine/core";
6567
6822
  import { IconClick } from "@tabler/icons-react";
6568
- import { jsxDEV as jsxDEV19, Fragment as Fragment3 } from "react/jsx-dev-runtime";
6569
- var isRemoraidButtonProps = (e) => {
6570
- if (typeof e !== "object") {
6571
- return false;
6572
- }
6573
- if (!("label" in e)) {
6574
- return false;
6575
- }
6576
- return true;
6577
- };
6823
+ import { jsxDEV as jsxDEV22, Fragment as Fragment4 } from "react/jsx-dev-runtime";
6578
6824
  function RemoraidButton({
6579
6825
  label,
6580
6826
  responsive,
@@ -6590,17 +6836,17 @@ function RemoraidButton({
6590
6836
  }) {
6591
6837
  const theme = useRemoraidTheme();
6592
6838
  const iconProps = { ...theme.iconProps.medium, ...componentsProps?.icon };
6593
- const icon = props.icon ? /* @__PURE__ */ jsxDEV19(props.icon, {
6839
+ const icon = props.icon ? /* @__PURE__ */ jsxDEV22(props.icon, {
6594
6840
  ...iconProps
6595
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV19(IconClick, {
6841
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV22(IconClick, {
6596
6842
  ...iconProps
6597
6843
  }, undefined, false, undefined, this);
6598
- return /* @__PURE__ */ jsxDEV19(Fragment3, {
6844
+ return /* @__PURE__ */ jsxDEV22(Fragment4, {
6599
6845
  children: [
6600
- /* @__PURE__ */ jsxDEV19(Tooltip4, {
6846
+ /* @__PURE__ */ jsxDEV22(Tooltip4, {
6601
6847
  label,
6602
6848
  ...componentsProps?.tooltip,
6603
- children: /* @__PURE__ */ jsxDEV19(ActionIcon2, {
6849
+ children: /* @__PURE__ */ jsxDEV22(ActionIcon2, {
6604
6850
  "aria-label": label,
6605
6851
  variant: variant ?? "default",
6606
6852
  onClick,
@@ -6614,7 +6860,7 @@ function RemoraidButton({
6614
6860
  children: icon
6615
6861
  }, undefined, false, undefined, this)
6616
6862
  }, undefined, false, undefined, this),
6617
- /* @__PURE__ */ jsxDEV19(Button, {
6863
+ /* @__PURE__ */ jsxDEV22(Button, {
6618
6864
  onClick,
6619
6865
  loading,
6620
6866
  variant: variant ?? "default",
@@ -6632,11 +6878,11 @@ function RemoraidButton({
6632
6878
  }
6633
6879
  // src/core/components/Widget/WidgetWrapper/index.tsx
6634
6880
  import {
6635
- Paper as Paper3,
6881
+ Paper as Paper2,
6636
6882
  Transition as Transition4
6637
6883
  } from "@mantine/core";
6638
6884
  import { useEffect as useEffect4 } from "react";
6639
- import { jsxDEV as jsxDEV20 } from "react/jsx-dev-runtime";
6885
+ import { jsxDEV as jsxDEV23 } from "react/jsx-dev-runtime";
6640
6886
  function WidgetWrapper({
6641
6887
  children,
6642
6888
  config,
@@ -6662,12 +6908,12 @@ function WidgetWrapper({
6662
6908
  registerWidget(page.pageId, config);
6663
6909
  }
6664
6910
  }, [pageRegistered]);
6665
- return /* @__PURE__ */ jsxDEV20(Transition4, {
6911
+ return /* @__PURE__ */ jsxDEV23(Transition4, {
6666
6912
  mounted: page !== null && isWidgetSelected(page.pageId, config.widgetId),
6667
6913
  transition: "fade-left",
6668
6914
  duration: theme.transitionDurations.medium,
6669
6915
  timingFunction: "ease",
6670
- children: (transitionStyle) => /* @__PURE__ */ jsxDEV20(Paper3, {
6916
+ children: (transitionStyle) => /* @__PURE__ */ jsxDEV23(Paper2, {
6671
6917
  p: "md",
6672
6918
  shadow: "md",
6673
6919
  bg: theme.transparentBackground,
@@ -6683,7 +6929,7 @@ function WidgetWrapper({
6683
6929
  updateActiveWidget(null);
6684
6930
  },
6685
6931
  children: [
6686
- withCloseButton !== false && /* @__PURE__ */ jsxDEV20(CloseButton, {
6932
+ withCloseButton !== false && /* @__PURE__ */ jsxDEV23(CloseButton, {
6687
6933
  widgetId: config.widgetId
6688
6934
  }, undefined, false, undefined, this),
6689
6935
  children
@@ -6700,27 +6946,31 @@ import {
6700
6946
  Divider as Divider3,
6701
6947
  Group as Group4,
6702
6948
  Loader,
6703
- Title
6949
+ Title,
6950
+ Stack as Stack3
6704
6951
  } from "@mantine/core";
6705
- import { jsxDEV as jsxDEV21, Fragment as Fragment4 } from "react/jsx-dev-runtime";
6952
+ import { jsxDEV as jsxDEV24, Fragment as Fragment5 } from "react/jsx-dev-runtime";
6706
6953
  import { createElement as createElement2 } from "react";
6707
6954
  function Widget({
6708
6955
  children,
6709
6956
  id,
6710
6957
  config,
6711
6958
  title,
6712
- badges,
6713
- buttons,
6714
- alerts,
6959
+ badges: badgesProp,
6960
+ buttons: buttonsProp,
6961
+ alerts: alertsProp,
6715
6962
  gaps,
6716
6963
  loading,
6717
6964
  mt,
6718
6965
  componentsProps
6719
6966
  }) {
6967
+ const buttons = buttonsProp?.map((button) => asElementOrPropsOfType(RemoraidButton, button, "Check the 'buttons' property of this widget."));
6968
+ const alerts = alertsProp?.map((alert) => asElementOrPropsOfType(AlertMinimal, alert, "Check the 'alerts' property of this widget."));
6969
+ const badges = badgesProp?.map((badge) => asElementOrPropsOfType(BadgeMinimal, badge, "Check the 'badges' property of this widget."));
6720
6970
  const badgesGap = (typeof gaps === "object" ? gaps.badges : gaps) ?? "xs";
6721
6971
  const buttonsGap = (typeof gaps === "object" ? gaps.buttons : gaps) ?? "xs";
6722
6972
  const alertsGap = (typeof gaps === "object" ? gaps.alerts : gaps) ?? "xs";
6723
- return /* @__PURE__ */ jsxDEV21(WidgetWrapper_default, {
6973
+ return /* @__PURE__ */ jsxDEV24(WidgetWrapper_default, {
6724
6974
  config: {
6725
6975
  widgetId: id,
6726
6976
  name: title,
@@ -6733,60 +6983,66 @@ function Widget({
6733
6983
  },
6734
6984
  ...componentsProps?.wrapper,
6735
6985
  children: [
6736
- /* @__PURE__ */ jsxDEV21(Group4, {
6986
+ /* @__PURE__ */ jsxDEV24(Group4, {
6737
6987
  justify: "space-between",
6738
6988
  wrap: "nowrap",
6739
6989
  children: [
6740
- /* @__PURE__ */ jsxDEV21(Group4, {
6990
+ /* @__PURE__ */ jsxDEV24(Group4, {
6741
6991
  gap: badgesGap,
6742
6992
  wrap: "nowrap",
6743
6993
  children: [
6744
- /* @__PURE__ */ jsxDEV21(Title, {
6994
+ /* @__PURE__ */ jsxDEV24(Title, {
6745
6995
  order: 1,
6746
6996
  size: "h3",
6747
6997
  lineClamp: 1,
6748
6998
  children: title
6749
6999
  }, undefined, false, undefined, this),
6750
- badges !== undefined && /* @__PURE__ */ jsxDEV21(BadgeGroup, {
7000
+ badges !== undefined && /* @__PURE__ */ jsxDEV24(BadgeGroup, {
6751
7001
  badges,
6752
7002
  gap: badgesGap,
6753
7003
  ...componentsProps?.badgeGroup
6754
7004
  }, undefined, false, undefined, this)
6755
7005
  ]
6756
7006
  }, undefined, true, undefined, this),
6757
- /* @__PURE__ */ jsxDEV21(Group4, {
7007
+ /* @__PURE__ */ jsxDEV24(Group4, {
6758
7008
  gap: buttonsGap,
6759
7009
  wrap: "nowrap",
6760
- children: buttons !== undefined && buttons.map((e, i) => {
6761
- if (isRemoraidButtonProps(e)) {
6762
- return /* @__PURE__ */ createElement2(RemoraidButton, {
6763
- ...e,
6764
- key: i
6765
- });
7010
+ children: buttons !== undefined && buttons.map((button, i) => {
7011
+ if (isValidElementOfType(RemoraidButton, button)) {
7012
+ return button;
6766
7013
  }
6767
- return e;
7014
+ return /* @__PURE__ */ createElement2(RemoraidButton, {
7015
+ ...button,
7016
+ key: i
7017
+ });
6768
7018
  })
6769
7019
  }, undefined, false, undefined, this)
6770
7020
  ]
6771
7021
  }, undefined, true, undefined, this),
6772
- /* @__PURE__ */ jsxDEV21(Divider3, {
6773
- my: "md"
7022
+ /* @__PURE__ */ jsxDEV24(Divider3, {
7023
+ my: "md",
7024
+ ...componentsProps?.divider
6774
7025
  }, undefined, false, undefined, this),
6775
- alerts !== undefined && alerts.map((a, i) => {
6776
- if (isAlertMinimalProps(a)) {
7026
+ /* @__PURE__ */ jsxDEV24(Stack3, {
7027
+ align: "stretch",
7028
+ gap: alertsGap,
7029
+ mb: alerts && alerts.length > 0 ? "md" : 0,
7030
+ ...componentsProps?.alertsContainer,
7031
+ children: alerts?.map((alert, i) => {
7032
+ if (isValidElementOfType(AlertMinimal, alert)) {
7033
+ return alert;
7034
+ }
6777
7035
  return /* @__PURE__ */ createElement2(AlertMinimal, {
6778
- ...a,
6779
- mb: alertsGap,
7036
+ ...alert,
6780
7037
  key: i
6781
7038
  });
6782
- }
6783
- return a;
6784
- }),
6785
- loading ? /* @__PURE__ */ jsxDEV21(Center, {
6786
- children: /* @__PURE__ */ jsxDEV21(Loader, {
7039
+ })
7040
+ }, undefined, false, undefined, this),
7041
+ loading ? /* @__PURE__ */ jsxDEV24(Center, {
7042
+ children: /* @__PURE__ */ jsxDEV24(Loader, {
6787
7043
  ...componentsProps?.loader
6788
7044
  }, undefined, false, undefined, this)
6789
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV21(Fragment4, {
7045
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV24(Fragment5, {
6790
7046
  children
6791
7047
  }, undefined, false, undefined, this)
6792
7048
  ]
@@ -6795,7 +7051,7 @@ function Widget({
6795
7051
  // src/core/components/NotFoundPage/index.tsx
6796
7052
  import { Alert as Alert2 } from "@mantine/core";
6797
7053
  import { usePathname as usePathname3 } from "next/navigation";
6798
- import { jsxDEV as jsxDEV22 } from "react/jsx-dev-runtime";
7054
+ import { jsxDEV as jsxDEV25 } from "react/jsx-dev-runtime";
6799
7055
  function NotFoundPage({
6800
7056
  children,
6801
7057
  message,
@@ -6803,11 +7059,11 @@ function NotFoundPage({
6803
7059
  }) {
6804
7060
  const pathname = usePathname3();
6805
7061
  const theme = useRemoraidTheme();
6806
- return /* @__PURE__ */ jsxDEV22(Page, {
7062
+ return /* @__PURE__ */ jsxDEV25(Page, {
6807
7063
  name: "Not Found",
6808
7064
  ...componentsProps?.page,
6809
7065
  children: [
6810
- /* @__PURE__ */ jsxDEV22(Alert2, {
7066
+ /* @__PURE__ */ jsxDEV25(Alert2, {
6811
7067
  ...theme.alertProps.negative,
6812
7068
  title: "404 - Page Not Found",
6813
7069
  children: message ?? `Could not find page ${pathname}.`
@@ -6818,7 +7074,7 @@ function NotFoundPage({
6818
7074
  }
6819
7075
  // src/core/components/EnvironmentShell/index.tsx
6820
7076
  import { Alert as Alert3 } from "@mantine/core";
6821
- import { jsxDEV as jsxDEV23, Fragment as Fragment5 } from "react/jsx-dev-runtime";
7077
+ import { jsxDEV as jsxDEV26, Fragment as Fragment6 } from "react/jsx-dev-runtime";
6822
7078
  function EnvironmentShell({
6823
7079
  children,
6824
7080
  environment,
@@ -6832,7 +7088,7 @@ function EnvironmentShell({
6832
7088
  const undefinedKeys = Object.keys(environment).filter((key) => environment[key] === undefined);
6833
7089
  const alertTitle = `Please Specify Environment Variable${undefinedKeys.length > 1 ? "s" : ""}`;
6834
7090
  const alertMessage = `Components could not be rendered because the following environment variables are not specified: ${undefinedKeys.join(", ")}.`;
6835
- const alert = /* @__PURE__ */ jsxDEV23(Alert3, {
7091
+ const alert = /* @__PURE__ */ jsxDEV26(Alert3, {
6836
7092
  ...theme.alertProps.neutral,
6837
7093
  title: alertTitle,
6838
7094
  m,
@@ -6840,12 +7096,12 @@ function EnvironmentShell({
6840
7096
  children: message ?? alertMessage
6841
7097
  }, undefined, false, undefined, this);
6842
7098
  if (undefinedKeys.length === 0) {
6843
- return /* @__PURE__ */ jsxDEV23(Fragment5, {
7099
+ return /* @__PURE__ */ jsxDEV26(Fragment6, {
6844
7100
  children
6845
7101
  }, undefined, false, undefined, this);
6846
7102
  }
6847
7103
  if (withContainer) {
6848
- return /* @__PURE__ */ jsxDEV23(PageContainer, {
7104
+ return /* @__PURE__ */ jsxDEV26(PageContainer, {
6849
7105
  componentsProps: { container: componentsProps?.container },
6850
7106
  children: alert
6851
7107
  }, undefined, false, undefined, this);
@@ -6853,20 +7109,20 @@ function EnvironmentShell({
6853
7109
  return alert;
6854
7110
  }
6855
7111
  // src/core/components/SettingsWidget/index.tsx
6856
- import { createContext as createContext4, useContext as useContext7 } from "react";
7112
+ import { createContext as createContext6, useContext as useContext9 } from "react";
6857
7113
  import { IconRestore } from "@tabler/icons-react";
6858
7114
 
6859
7115
  // src/core/components/SettingsWidget/SaveButton/index.tsx
6860
7116
  import { IconDeviceFloppy } from "@tabler/icons-react";
6861
7117
  import { Group as Group5 } from "@mantine/core";
6862
- import { jsxDEV as jsxDEV24 } from "react/jsx-dev-runtime";
7118
+ import { jsxDEV as jsxDEV27 } from "react/jsx-dev-runtime";
6863
7119
  function SaveButton({
6864
7120
  onSaveChanges,
6865
7121
  insideContainer,
6866
7122
  componentsProps
6867
7123
  }) {
6868
7124
  const settingsWidgetOptions = useSettingsWidgetContext();
6869
- const button = /* @__PURE__ */ jsxDEV24(RemoraidButton, {
7125
+ const button = /* @__PURE__ */ jsxDEV27(RemoraidButton, {
6870
7126
  label: "Save Changes",
6871
7127
  icon: IconDeviceFloppy,
6872
7128
  onClick: onSaveChanges,
@@ -6881,7 +7137,7 @@ function SaveButton({
6881
7137
  }
6882
7138
  }, undefined, false, undefined, this);
6883
7139
  if (insideContainer !== false) {
6884
- return /* @__PURE__ */ jsxDEV24(Group5, {
7140
+ return /* @__PURE__ */ jsxDEV27(Group5, {
6885
7141
  w: "100%",
6886
7142
  justify: "flex-end",
6887
7143
  mt: "md",
@@ -6893,11 +7149,11 @@ function SaveButton({
6893
7149
  }
6894
7150
 
6895
7151
  // src/core/components/SettingsWidget/index.tsx
6896
- import { jsxDEV as jsxDEV25 } from "react/jsx-dev-runtime";
7152
+ import { jsxDEV as jsxDEV28 } from "react/jsx-dev-runtime";
6897
7153
  var defaultSettingsWidgetContext = {};
6898
- var settingsWidgetContext = createContext4(defaultSettingsWidgetContext);
7154
+ var settingsWidgetContext = createContext6(defaultSettingsWidgetContext);
6899
7155
  var useSettingsWidgetContext = () => {
6900
- return useContext7(settingsWidgetContext);
7156
+ return useContext9(settingsWidgetContext);
6901
7157
  };
6902
7158
  function SettingsWidget({
6903
7159
  children,
@@ -6906,9 +7162,9 @@ function SettingsWidget({
6906
7162
  custom,
6907
7163
  widgetProps
6908
7164
  }) {
6909
- return /* @__PURE__ */ jsxDEV25(settingsWidgetContext.Provider, {
7165
+ return /* @__PURE__ */ jsxDEV28(settingsWidgetContext.Provider, {
6910
7166
  value: { custom, unsavedChanges },
6911
- children: /* @__PURE__ */ jsxDEV25(Widget, {
7167
+ children: /* @__PURE__ */ jsxDEV28(Widget, {
6912
7168
  title: "Settings",
6913
7169
  id: "settings",
6914
7170
  mt: "md",
@@ -6944,27 +7200,27 @@ var SettingsWidget_default = Object.assign(SettingsWidget, {
6944
7200
  SaveButton
6945
7201
  });
6946
7202
  // src/core/components/SettingsWidget/SettingsTable/index.tsx
6947
- import { createContext as createContext5, useContext as useContext8 } from "react";
7203
+ import { createContext as createContext7, useContext as useContext10 } from "react";
6948
7204
  import { Table as Table2 } from "@mantine/core";
6949
7205
 
6950
7206
  // src/core/components/SettingsWidget/SettingsTable/Row/index.tsx
6951
7207
  import { Table, Text as Text2 } from "@mantine/core";
6952
- import { jsxDEV as jsxDEV26 } from "react/jsx-dev-runtime";
7208
+ import { jsxDEV as jsxDEV29 } from "react/jsx-dev-runtime";
6953
7209
  function Row({
6954
7210
  children,
6955
7211
  label
6956
7212
  }) {
6957
7213
  const options = useSettingsTableOptions();
6958
- return /* @__PURE__ */ jsxDEV26(Table.Tr, {
7214
+ return /* @__PURE__ */ jsxDEV29(Table.Tr, {
6959
7215
  children: [
6960
- /* @__PURE__ */ jsxDEV26(Table.Th, {
7216
+ /* @__PURE__ */ jsxDEV29(Table.Th, {
6961
7217
  w: options.leftColumnWidth,
6962
- children: /* @__PURE__ */ jsxDEV26(Text2, {
7218
+ children: /* @__PURE__ */ jsxDEV29(Text2, {
6963
7219
  size: "sm",
6964
7220
  children: label
6965
7221
  }, undefined, false, undefined, this)
6966
7222
  }, undefined, false, undefined, this),
6967
- /* @__PURE__ */ jsxDEV26(Table.Td, {
7223
+ /* @__PURE__ */ jsxDEV29(Table.Td, {
6968
7224
  py: "xs",
6969
7225
  children
6970
7226
  }, undefined, false, undefined, this)
@@ -6973,29 +7229,30 @@ function Row({
6973
7229
  }
6974
7230
 
6975
7231
  // src/core/components/SettingsWidget/SettingsTable/index.tsx
6976
- import { jsxDEV as jsxDEV27 } from "react/jsx-dev-runtime";
7232
+ import { jsxDEV as jsxDEV30 } from "react/jsx-dev-runtime";
6977
7233
  var defaultSettingsTableOptions = {
6978
7234
  leftColumnWidth: "38.2%"
6979
7235
  };
6980
- var settingsTableOptionsContext = createContext5(defaultSettingsTableOptions);
7236
+ var settingsTableOptionsContext = createContext7(defaultSettingsTableOptions);
6981
7237
  var useSettingsTableOptions = () => {
6982
- return useContext8(settingsTableOptionsContext);
7238
+ return useContext10(settingsTableOptionsContext);
6983
7239
  };
6984
7240
  function SettingsTable({
6985
- children,
6986
- leftColumnWidth
7241
+ leftColumnWidth,
7242
+ children: childrenProp
6987
7243
  }) {
6988
7244
  const theme = useRemoraidTheme();
6989
- return /* @__PURE__ */ jsxDEV27(settingsTableOptionsContext.Provider, {
7245
+ const children = asChildrenOfType(Row, childrenProp, "Check children passed to 'SettingsTable' component.");
7246
+ return /* @__PURE__ */ jsxDEV30(settingsTableOptionsContext.Provider, {
6990
7247
  value: {
6991
7248
  leftColumnWidth: leftColumnWidth ?? defaultSettingsTableOptions.leftColumnWidth
6992
7249
  },
6993
- children: /* @__PURE__ */ jsxDEV27(Table2, {
7250
+ children: /* @__PURE__ */ jsxDEV30(Table2, {
6994
7251
  bg: theme.transparentBackground,
6995
7252
  withTableBorder: true,
6996
7253
  variant: "vertical",
6997
7254
  layout: "fixed",
6998
- children: /* @__PURE__ */ jsxDEV27(Table2.Tbody, {
7255
+ children: /* @__PURE__ */ jsxDEV30(Table2.Tbody, {
6999
7256
  children
7000
7257
  }, undefined, false, undefined, this)
7001
7258
  }, undefined, false, undefined, this)
@@ -7005,11 +7262,10 @@ var SettingsTable_default = Object.assign(SettingsTable, {
7005
7262
  Row
7006
7263
  });
7007
7264
  // src/core/components/NavbarSettingsWidget/index.tsx
7008
- import { cloneElement } from "react";
7009
7265
  var import_lodash = __toESM(require_lodash(), 1);
7010
7266
  import { Chip as Chip3, Group as Group6 } from "@mantine/core";
7011
7267
  import { IconLink as IconLink2 } from "@tabler/icons-react";
7012
- import { jsxDEV as jsxDEV28 } from "react/jsx-dev-runtime";
7268
+ import { jsxDEV as jsxDEV31 } from "react/jsx-dev-runtime";
7013
7269
  var defaultNavbarSettingsWidgetId = "navbar-settings";
7014
7270
  function NavbarSettingsWidget({
7015
7271
  additionalRows,
@@ -7019,7 +7275,7 @@ function NavbarSettingsWidget({
7019
7275
  const { userExperience, updateUserExperience, initialUserExperience } = useRemoraidUserExperience();
7020
7276
  const app = useRemoraidApp();
7021
7277
  const theme = useRemoraidTheme();
7022
- return /* @__PURE__ */ jsxDEV28(SettingsWidget_default, {
7278
+ return /* @__PURE__ */ jsxDEV31(SettingsWidget_default, {
7023
7279
  widgetProps: {
7024
7280
  id: defaultNavbarSettingsWidgetId,
7025
7281
  title: "Navbar Settings",
@@ -7028,32 +7284,33 @@ function NavbarSettingsWidget({
7028
7284
  onRestoreDefaultValues: () => {
7029
7285
  updateUserExperience((prev) => ({
7030
7286
  ...prev,
7031
- navbarSettings: defaultNavbarSettings[userExperience.navbarVariant]
7287
+ navbar: initialUserExperience.navbar
7032
7288
  }));
7033
7289
  },
7034
- custom: !import_lodash.isEqual(userExperience.navbarSettings, initialUserExperience.navbarSettings),
7035
- children: /* @__PURE__ */ jsxDEV28(SettingsTable_default, {
7290
+ custom: !import_lodash.isEqual(userExperience.navbar, initialUserExperience.navbar),
7291
+ children: /* @__PURE__ */ jsxDEV31(SettingsTable_default, {
7292
+ ...componentsProps?.table,
7036
7293
  children: [
7037
- /* @__PURE__ */ jsxDEV28(SettingsTable_default.Row, {
7294
+ /* @__PURE__ */ jsxDEV31(SettingsTable_default.Row, {
7038
7295
  label: "Select which pages you want to display or hide",
7039
- children: /* @__PURE__ */ jsxDEV28(Chip3.Group, {
7296
+ children: /* @__PURE__ */ jsxDEV31(Chip3.Group, {
7040
7297
  multiple: true,
7041
- value: app.navigablePages.filter((p) => !userExperience.navbarSettings.hiddenPages.includes(p.href)).map((p) => p.href),
7298
+ value: app.navigablePages.filter((p) => !userExperience.navbar.hiddenPages.includes(p.href)).map((p) => p.href),
7042
7299
  onChange: (newValue) => {
7043
7300
  updateUserExperience((prev) => ({
7044
7301
  ...prev,
7045
- navbarSettings: {
7046
- ...prev.navbarSettings,
7302
+ navbar: {
7303
+ ...prev.navbar,
7047
7304
  hiddenPages: app.navigablePages.filter((p) => !newValue.includes(p.href)).map((p) => p.href)
7048
7305
  }
7049
7306
  }));
7050
7307
  },
7051
- children: /* @__PURE__ */ jsxDEV28(Group6, {
7308
+ children: /* @__PURE__ */ jsxDEV31(Group6, {
7052
7309
  justify: "flex-start",
7053
7310
  gap: "xs",
7054
- children: app.navigablePages.map((p) => ({ ...p, icon: p.icon ?? IconLink2 })).map((p, i) => /* @__PURE__ */ jsxDEV28(Chip3, {
7311
+ children: app.navigablePages.map((p) => ({ ...p, icon: p.icon ?? IconLink2 })).map((p, i) => /* @__PURE__ */ jsxDEV31(Chip3, {
7055
7312
  value: p.href,
7056
- icon: /* @__PURE__ */ jsxDEV28(p.icon, {
7313
+ icon: /* @__PURE__ */ jsxDEV31(p.icon, {
7057
7314
  ...theme.iconProps.tiny,
7058
7315
  color: theme.primaryColor
7059
7316
  }, undefined, false, undefined, this),
@@ -7063,12 +7320,60 @@ function NavbarSettingsWidget({
7063
7320
  }, undefined, false, undefined, this)
7064
7321
  }, undefined, false, undefined, this)
7065
7322
  }, "select-hidden-pages", false, undefined, this),
7066
- ...(additionalRows ?? []).map((row, i) => row.key ? row : cloneElement(row, { key: i }))
7067
- ],
7068
- ...componentsProps?.table
7069
- }, undefined, false, undefined, this)
7323
+ additionalRows && additionalRows.map((row, i) => {
7324
+ if (isValidElementOfType(SettingsTable_default.Row, row)) {
7325
+ return row;
7326
+ }
7327
+ return /* @__PURE__ */ jsxDEV31(SettingsTable_default.Row, {
7328
+ ...row
7329
+ }, i, false, undefined, this);
7330
+ })
7331
+ ]
7332
+ }, undefined, true, undefined, this)
7070
7333
  }, undefined, false, undefined, this);
7071
7334
  }
7335
+ // src/core/components/ContextClusterProvider/index.tsx
7336
+ import React8 from "react";
7337
+ import { jsxDEV as jsxDEV32 } from "react/jsx-dev-runtime";
7338
+ var createContextCluster = (generalDefaultValue, staticIds) => {
7339
+ const isStaticId = (id) => {
7340
+ if (staticIds?.find((staticId) => staticId === id)) {
7341
+ return true;
7342
+ }
7343
+ return false;
7344
+ };
7345
+ const contexts = {};
7346
+ const defaultValues = {};
7347
+ const createContext8 = (id, defaultValue) => {
7348
+ const context = React8.createContext(defaultValue ?? generalDefaultValue);
7349
+ contexts[id] = context;
7350
+ defaultValues[id] = defaultValue ?? generalDefaultValue;
7351
+ return context;
7352
+ };
7353
+ const useContext11 = (id) => {
7354
+ if (isStaticId(id)) {
7355
+ return contexts[id] ? React8.useContext(contexts[id]) : generalDefaultValue;
7356
+ }
7357
+ return contexts[id] ? React8.useContext(contexts[id]) : null;
7358
+ };
7359
+ return {
7360
+ contexts,
7361
+ defaultValues,
7362
+ generalDefaultValue,
7363
+ createContext: createContext8,
7364
+ useContext: useContext11
7365
+ };
7366
+ };
7367
+ function ContextClusterProvider({
7368
+ cluster,
7369
+ values = {},
7370
+ children
7371
+ }) {
7372
+ return Object.entries(cluster.contexts).reduceRight((t, [id, context]) => /* @__PURE__ */ jsxDEV32(context.Provider, {
7373
+ value: values[id] ?? cluster.defaultValues[id] ?? cluster.generalDefaultValue,
7374
+ children: t
7375
+ }, undefined, false, undefined, this), children);
7376
+ }
7072
7377
  export {
7073
7378
  useWidgets,
7074
7379
  useSettingsWidgetContext as useSettingsWidgetOptions,
@@ -7077,17 +7382,31 @@ export {
7077
7382
  useRemoraidTheme,
7078
7383
  useRemoraidApp,
7079
7384
  usePage,
7385
+ useLayouts,
7080
7386
  useHydrationStatus,
7081
7387
  useHydratedMantineColorScheme,
7388
+ useFrameLayout,
7389
+ isValidElementOfType,
7390
+ isFrameLayout,
7391
+ getElementTypeName,
7082
7392
  defaultUserExperienceCookieName,
7083
7393
  defaultUserExperience,
7084
7394
  defaultSettingsWidgetContext as defaultSettingsWidgetOptions,
7085
7395
  defaultSettingsTableOptions,
7086
7396
  defaultNavbarSettingsWidgetId,
7087
- defaultNavbarSettings,
7397
+ defaultLayoutsContext,
7398
+ defaultFrameLayoutContext,
7399
+ defaultAppShellNavbarPositions,
7400
+ defaultAppShellLayoutId,
7401
+ defaultAppShellFooterPositions,
7088
7402
  defaultAppContext,
7089
7403
  createUserExperienceContext,
7090
7404
  createRemoraidTheme,
7405
+ createContextCluster,
7406
+ co,
7407
+ asElementOrPropsOfType,
7408
+ asElementOfType,
7409
+ asChildrenOfType,
7091
7410
  WidgetWrapper_default as WidgetWrapper,
7092
7411
  WidgetSelectionHeader,
7093
7412
  Widget,
@@ -7105,11 +7424,17 @@ export {
7105
7424
  NotFoundPage,
7106
7425
  NavbarVariant,
7107
7426
  NavbarSettingsWidget,
7427
+ LayoutType,
7108
7428
  HydrationStatusProvider,
7429
+ FrameLayoutVariant,
7430
+ FrameLayoutSection,
7431
+ FrameLayout_default as FrameLayout,
7432
+ FooterVariant,
7109
7433
  EnvironmentShell,
7434
+ ContextClusterProvider,
7110
7435
  BadgeMinimal,
7111
7436
  BadgeGroup,
7112
- AppShell,
7437
+ AppShell_default as AppShell,
7113
7438
  AppProvider,
7114
7439
  AlertMinimal,
7115
7440
  AlertCategory