remoraid 2.44.2 → 3.1.1

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.
package/README.md CHANGED
@@ -1,12 +1,27 @@
1
1
  # Usage
2
2
 
3
- `RemoraidProvider` must be rendered at the root of your application and should be used only once.
3
+ Import Mantine and Remoraid styles once at the root of your application.
4
+ `@mantine/dates/styles.css` is required when using `remoraid/jsonforms`.
4
5
 
5
6
  ```typescript
6
- import { RemoraidProvider } from "remoraid";
7
+ import "@mantine/core/styles.css";
8
+ import "@mantine/dates/styles.css";
9
+ import "remoraid/core/styles.css";
10
+ ```
11
+
12
+ `RemoraidProvider` must be rendered inside `MantineProvider` at the root of
13
+ your application and should be used only once.
14
+
15
+ ```tsx
16
+ import { MantineProvider } from "@mantine/core";
17
+ import { RemoraidProvider } from "remoraid/core";
7
18
 
8
19
  function Demo() {
9
- return <RemoraidProvider>{/_ Your app here _/}</RemoraidProvider>;
20
+ return (
21
+ <MantineProvider>
22
+ <RemoraidProvider>{/* Your app here */}</RemoraidProvider>
23
+ </MantineProvider>
24
+ );
10
25
  }
11
26
  ```
12
27
 
@@ -6050,7 +6050,12 @@ function UserExperienceProviderWrapper({
6050
6050
  initialValue
6051
6051
  }) {
6052
6052
  const [cookies, setCookie] = import_react_cookie.useCookies();
6053
- const initialUserExperience = import_lodash3.merge(defaultUserExperience, initialValue);
6053
+ const initialUserExperience = import_lodash3.mergeWith({}, defaultUserExperience, initialValue, (_objValue, srcValue) => {
6054
+ if (Array.isArray(srcValue)) {
6055
+ return [...srcValue];
6056
+ }
6057
+ return;
6058
+ });
6054
6059
  const [userExperience, setUserExperience] = import_react5.useState(initialUserExperience);
6055
6060
  const [processedCookie, setProcessedCookie] = import_react5.useState(false);
6056
6061
  const updateUserExperience = (p) => {
@@ -6527,7 +6532,7 @@ function FooterMinimal({
6527
6532
  ...componentsProps?.container,
6528
6533
  children: /* @__PURE__ */ jsx_runtime13.jsx(import_core6.Center, {
6529
6534
  children: /* @__PURE__ */ jsx_runtime13.jsx(Icon2, {
6530
- color: "var(--mantine-color-default-border)",
6535
+ color: "var(--mantine-color-disabled)",
6531
6536
  ...theme.componentsProps.icons.huge,
6532
6537
  ...componentsProps?.icon
6533
6538
  })
@@ -6594,10 +6599,10 @@ function NavigationMenu({
6594
6599
  const mantineTheme = import_core7.useMantineTheme();
6595
6600
  const router = useRemoraidRouter();
6596
6601
  const { pathname } = router;
6597
- const item = (element) => /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Transition, {
6598
- mounted: element.mounted ?? true,
6599
- ...componentsProps?.transition,
6600
- children: (transitionStyle) => /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Menu.Item, {
6602
+ const item = (element, style) => {
6603
+ const isLeaf2 = element.children === undefined || element.children.length === 0;
6604
+ const Menu2 = isLeaf2 ? import_core7.Menu : import_core7.Menu.Sub;
6605
+ return /* @__PURE__ */ jsx_runtime15.jsx(Menu2.Item, {
6601
6606
  leftSection: element.icon ? /* @__PURE__ */ jsx_runtime15.jsx(element.icon, {
6602
6607
  ...theme.componentsProps.icons.small
6603
6608
  }) : undefined,
@@ -6610,36 +6615,48 @@ function NavigationMenu({
6610
6615
  element.onClick(e);
6611
6616
  }
6612
6617
  },
6613
- style: transitionStyle,
6618
+ style,
6614
6619
  children: element.label
6615
- })
6616
- });
6617
- const targetElement = import_react12.isValidElement(target) ? target : item(target);
6618
- if (elements === undefined || elements.length === 0) {
6619
- return targetElement;
6620
- }
6621
- return /* @__PURE__ */ jsx_runtime15.jsxs(import_core7.Menu, {
6622
- trigger: "click-hover",
6623
- ...componentsProps?.Menu,
6624
- children: [
6625
- /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Menu.Target, {
6626
- children: /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Box, {
6627
- children: targetElement
6628
- })
6629
- }),
6630
- /* @__PURE__ */ jsx_runtime15.jsxs(import_core7.Menu.Dropdown, {
6620
+ });
6621
+ };
6622
+ const isRoot = import_react12.isValidElement(target);
6623
+ const isLeaf = elements === undefined || elements.length === 0;
6624
+ const Menu = isRoot ? import_core7.Menu : import_core7.Menu.Sub;
6625
+ const menuProps = isRoot ? { trigger: "click-hover", ...componentsProps?.Menu } : { ...componentsProps?.MenuSub };
6626
+ return /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Transition, {
6627
+ mounted: isRoot ? true : target.mounted ?? true,
6628
+ ...componentsProps?.transition,
6629
+ children: (transitionStyle) => {
6630
+ if (isLeaf) {
6631
+ if (isRoot) {
6632
+ return target;
6633
+ }
6634
+ return item(target, transitionStyle);
6635
+ }
6636
+ return /* @__PURE__ */ jsx_runtime15.jsxs(Menu, {
6637
+ ...menuProps,
6631
6638
  children: [
6632
- label !== undefined && /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Menu.Label, {
6633
- children: label
6639
+ /* @__PURE__ */ jsx_runtime15.jsx(Menu.Target, {
6640
+ children: isRoot ? /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Box, {
6641
+ ...componentsProps?.rootTargetContainer,
6642
+ children: target
6643
+ }) : item(target, transitionStyle)
6634
6644
  }),
6635
- elements.map((element, i) => /* @__PURE__ */ jsx_runtime15.jsx(NavigationMenu, {
6636
- target: item(element),
6637
- elements: element.children,
6638
- componentsProps
6639
- }, `navigation-menu-${i}`))
6645
+ /* @__PURE__ */ jsx_runtime15.jsxs(Menu.Dropdown, {
6646
+ children: [
6647
+ label !== undefined && /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Menu.Label, {
6648
+ children: label
6649
+ }),
6650
+ elements.map((element, i) => /* @__PURE__ */ jsx_runtime15.jsx(NavigationMenu, {
6651
+ target: element,
6652
+ elements: element.children,
6653
+ componentsProps
6654
+ }, `navigation-menu-${i}`))
6655
+ ]
6656
+ })
6640
6657
  ]
6641
- })
6642
- ]
6658
+ });
6659
+ }
6643
6660
  });
6644
6661
  }
6645
6662
 
@@ -7447,7 +7464,7 @@ function Page({
7447
7464
  }
7448
7465
  }, []);
7449
7466
  return /* @__PURE__ */ jsx_runtime25.jsx(pageContext.Provider, {
7450
- value: { name: name ?? pathname, pageId, ...config },
7467
+ value: { name: name ?? pageId, pageId, ...config },
7451
7468
  children: /* @__PURE__ */ jsx_runtime25.jsx(PageContainer, {
7452
7469
  ...componentsProps?.PageContainer,
7453
7470
  children: /* @__PURE__ */ jsx_runtime25.jsx(import_core14.Stack, {
@@ -7554,7 +7571,8 @@ function WidgetSelectionHeader({
7554
7571
  children: title ?? page.name
7555
7572
  }),
7556
7573
  /* @__PURE__ */ jsx_runtime27.jsx(import_core16.Divider, {
7557
- orientation: "vertical"
7574
+ orientation: "vertical",
7575
+ ...componentsProps?.divider
7558
7576
  }),
7559
7577
  isPageRegistered(page.pageId) && /* @__PURE__ */ jsx_runtime27.jsx(ScrollableChipGroup, {
7560
7578
  value: selectedWidgets,
@@ -7832,6 +7850,7 @@ function AlertMinimal({
7832
7850
  icon: Icon4 ? /* @__PURE__ */ jsx_runtime30.jsx(Icon4, {
7833
7851
  ...import_lodash16.merge({}, theme.componentsProps.icons[iconSize], componentsProps?.icon)
7834
7852
  }) : undefined,
7853
+ ...componentsProps?.alert,
7835
7854
  style: import_lodash16.merge(transitionStyle, componentsProps?.alert?.style),
7836
7855
  children: [
7837
7856
  text,
@@ -294,7 +294,7 @@ interface RemoraidProviderProps {
294
294
  };
295
295
  }
296
296
  declare function RemoraidProvider({ children, theme, initialUserExperience, router, componentsProps }: PropsWithChildren7<RemoraidProviderProps>): ReactNode7;
297
- import { BoxProps as BoxProps2 } from "@mantine/core";
297
+ import { BoxProps as BoxProps3 } from "@mantine/core";
298
298
  import { ComponentProps as ComponentProps7, PropsWithChildren as PropsWithChildren13, ReactNode as ReactNode22 } from "react";
299
299
  import { PropsWithChildren as PropsWithChildren8, ReactNode as ReactNode8 } from "react";
300
300
  import { SetOptional } from "type-fest";
@@ -307,7 +307,7 @@ declare function AppProvider2<V extends CustomAppVariables>({ appContext: appCon
307
307
  import { ComponentProps as ComponentProps4, ReactNode as ReactNode18 } from "react";
308
308
  import { ReactNode as ReactNode17 } from "react";
309
309
  import { MantineBreakpoint as MantineBreakpoint3, PaperProps } from "@mantine/core";
310
- import { MenuProps, TransitionProps as TransitionProps2 } from "@mantine/core";
310
+ import { BoxProps, MenuProps, MenuSubProps, TransitionProps as TransitionProps2 } from "@mantine/core";
311
311
  import { ReactElement as ReactElement2 } from "react";
312
312
  interface NavigationMenuProps {
313
313
  target: ReactElement2 | NavigationElement;
@@ -315,7 +315,9 @@ interface NavigationMenuProps {
315
315
  label?: string;
316
316
  componentsProps?: {
317
317
  transition?: Partial<TransitionProps2>
318
+ rootTargetContainer?: Partial<BoxProps>
318
319
  Menu?: Partial<MenuProps>
320
+ MenuSub?: Partial<MenuSubProps>
319
321
  };
320
322
  }
321
323
  import { ActionIconProps, ActionIconVariant, ButtonProps, ButtonVariant, MantineBreakpoint as MantineBreakpoint2, MantineColor, MantineSize as MantineSize3, TooltipProps, TransitionProps as TransitionProps3 } from "@mantine/core";
@@ -414,7 +416,7 @@ interface PageContainerProps {
414
416
  }
415
417
  declare function PageContainer2({ children, p, hidden, componentsProps }: PropsWithChildren9<PageContainerProps>): ReactNode12;
416
418
  import { PropsWithChildren as PropsWithChildren10, ReactNode as ReactNode13 } from "react";
417
- import { BoxProps } from "@mantine/core";
419
+ import { BoxProps as BoxProps2 } from "@mantine/core";
418
420
  declare const useFrameLayoutElement: () => LayoutElementContext<LayoutType.Frame> | null;
419
421
  interface FrameLayoutElementProps {
420
422
  section: FrameLayoutSection;
@@ -423,7 +425,7 @@ interface FrameLayoutElementProps {
423
425
  layoutId?: string;
424
426
  hidden?: boolean;
425
427
  componentsProps?: {
426
- container?: Partial<BoxProps>
428
+ container?: Partial<BoxProps2>
427
429
  PageContainer?: Partial<PageContainerProps>
428
430
  };
429
431
  }
@@ -564,7 +566,7 @@ interface AppShellProps<V extends CustomAppVariables> {
564
566
  initialUserExperience?: UserExperienceProviderProps<AppShellUserExperience>["initialValue"];
565
567
  gutter?: FrameLayoutProps["gutter"];
566
568
  componentsProps?: {
567
- container?: Partial<BoxProps2>
569
+ container?: Partial<BoxProps3>
568
570
  layout?: Partial<FrameLayoutProps>
569
571
  navbar?: Partial<NavbarProps>
570
572
  footer?: Partial<FooterProps>
@@ -596,7 +598,7 @@ declare function UserExperienceProviderWrapper<T extends UserExperience>({ child
596
598
  declare const defaultUserExperience: CoreUserExperience;
597
599
  declare const defaultUserExperienceCookieName = "remoraid-core-user-experience";
598
600
  declare const useRemoraidUserExperience: () => UserExperienceContext<CoreUserExperience>;
599
- import { ChipProps, FlexProps as FlexProps2, MenuProps as MenuProps2, TextProps } from "@mantine/core";
601
+ import { ChipProps, DividerProps, FlexProps as FlexProps2, MenuProps as MenuProps2, TextProps } from "@mantine/core";
600
602
  import { ReactNode as ReactNode27 } from "react";
601
603
  import { ChipGroupProps, FlexProps, MantineSize as MantineSize7, ScrollAreaProps as ScrollAreaProps2 } from "@mantine/core";
602
604
  import { PropsWithChildren as PropsWithChildren17, ReactNode as ReactNode26, RefObject as RefObject2 } from "react";
@@ -621,6 +623,7 @@ interface WidgetSelectionHeaderProps {
621
623
  container?: Partial<FlexProps2>
622
624
  widgetMenu?: Partial<MenuProps2>
623
625
  title?: Partial<TextProps>
626
+ divider?: Partial<DividerProps>
624
627
  ScrollableChipGroup?: Partial<ScrollableChipGroupProps>
625
628
  Chip?: Partial<ChipProps>
626
629
  Pinnable?: Partial<PinnableProps>
@@ -671,7 +674,7 @@ interface WidgetWrapperProps {
671
674
  };
672
675
  }
673
676
  declare function WidgetWrapper({ config, mt, withCloseButton, pinnableSection, componentsProps, children }: PropsWithChildren18<WidgetWrapperProps>): ReactNode30;
674
- import { MantineSize as MantineSize10, LoaderProps, DividerProps, StackProps as StackProps3, TitleProps, ScrollAreaAutosizeProps, TextProps as TextProps2 } from "@mantine/core";
677
+ import { MantineSize as MantineSize10, LoaderProps, DividerProps as DividerProps2, StackProps as StackProps3, TitleProps, ScrollAreaAutosizeProps, TextProps as TextProps2 } from "@mantine/core";
675
678
  import { PropsWithChildren as PropsWithChildren19, ReactNode as ReactNode31 } from "react";
676
679
  interface WidgetProps {
677
680
  id: string;
@@ -697,7 +700,7 @@ interface WidgetProps {
697
700
  title?: Partial<TitleProps>
698
701
  description?: Partial<TextProps2>
699
702
  badgeGroup?: Partial<BadgeGroupProps>
700
- divider?: Partial<DividerProps>
703
+ divider?: Partial<DividerProps2>
701
704
  alertsContainer?: Partial<StackProps3>
702
705
  };
703
706
  }
@@ -820,7 +823,7 @@ declare function ContextClusterProvider<
820
823
  Context,
821
824
  StaticID extends string = never
822
825
  >({ cluster, values, children }: PropsWithChildren25<ContextClusterProviderProps<Context, StaticID>>): ReactNode41;
823
- import { BoxProps as BoxProps3, InputWrapperProps, ScrollAreaProps as ScrollAreaProps3 } from "@mantine/core";
826
+ import { BoxProps as BoxProps4, InputWrapperProps, ScrollAreaProps as ScrollAreaProps3 } from "@mantine/core";
824
827
  import { PropsWithChildren as PropsWithChildren26, ReactNode as ReactNode42 } from "react";
825
828
  interface InputWrapperScrollAreaProps {
826
829
  label?: string;
@@ -831,7 +834,7 @@ interface InputWrapperScrollAreaProps {
831
834
  componentsProps?: {
832
835
  container?: Partial<InputWrapperProps>
833
836
  ScrollArea?: Partial<ScrollAreaProps3>
834
- childrenContainer?: Partial<BoxProps3>
837
+ childrenContainer?: Partial<BoxProps4>
835
838
  };
836
839
  }
837
840
  declare function InputWrapperScrollArea({ children, label, mah, description, error, required, componentsProps }: PropsWithChildren26<InputWrapperScrollAreaProps>): ReactNode42;
@@ -5953,7 +5953,12 @@ function UserExperienceProviderWrapper({
5953
5953
  initialValue
5954
5954
  }) {
5955
5955
  const [cookies, setCookie] = useCookies();
5956
- const initialUserExperience = import_lodash3.merge(defaultUserExperience, initialValue);
5956
+ const initialUserExperience = import_lodash3.mergeWith({}, defaultUserExperience, initialValue, (_objValue, srcValue) => {
5957
+ if (Array.isArray(srcValue)) {
5958
+ return [...srcValue];
5959
+ }
5960
+ return;
5961
+ });
5957
5962
  const [userExperience, setUserExperience] = useState3(initialUserExperience);
5958
5963
  const [processedCookie, setProcessedCookie] = useState3(false);
5959
5964
  const updateUserExperience = (p) => {
@@ -6446,7 +6451,7 @@ function FooterMinimal({
6446
6451
  ...componentsProps?.container,
6447
6452
  children: /* @__PURE__ */ jsx13(Center, {
6448
6453
  children: /* @__PURE__ */ jsx13(Icon2, {
6449
- color: "var(--mantine-color-default-border)",
6454
+ color: "var(--mantine-color-disabled)",
6450
6455
  ...theme.componentsProps.icons.huge,
6451
6456
  ...componentsProps?.icon
6452
6457
  })
@@ -6508,7 +6513,7 @@ var import_lodash8 = __toESM(require_lodash(), 1);
6508
6513
  // src/core/components/AppShell/Navbar/NavbarMinimal/NavbarMinimalContent/NavigationMenu/index.tsx
6509
6514
  import {
6510
6515
  Box as Box2,
6511
- Menu,
6516
+ Menu as MantineMenu,
6512
6517
  Transition,
6513
6518
  useMantineTheme as useMantineTheme2
6514
6519
  } from "@mantine/core";
@@ -6524,10 +6529,10 @@ function NavigationMenu({
6524
6529
  const mantineTheme = useMantineTheme2();
6525
6530
  const router = useRemoraidRouter();
6526
6531
  const { pathname } = router;
6527
- const item = (element) => /* @__PURE__ */ jsx15(Transition, {
6528
- mounted: element.mounted ?? true,
6529
- ...componentsProps?.transition,
6530
- children: (transitionStyle) => /* @__PURE__ */ jsx15(Menu.Item, {
6532
+ const item = (element, style) => {
6533
+ const isLeaf2 = element.children === undefined || element.children.length === 0;
6534
+ const Menu2 = isLeaf2 ? MantineMenu : MantineMenu.Sub;
6535
+ return /* @__PURE__ */ jsx15(Menu2.Item, {
6531
6536
  leftSection: element.icon ? /* @__PURE__ */ jsx15(element.icon, {
6532
6537
  ...theme.componentsProps.icons.small
6533
6538
  }) : undefined,
@@ -6540,36 +6545,48 @@ function NavigationMenu({
6540
6545
  element.onClick(e);
6541
6546
  }
6542
6547
  },
6543
- style: transitionStyle,
6548
+ style,
6544
6549
  children: element.label
6545
- })
6546
- });
6547
- const targetElement = isValidElement2(target) ? target : item(target);
6548
- if (elements === undefined || elements.length === 0) {
6549
- return targetElement;
6550
- }
6551
- return /* @__PURE__ */ jsxs2(Menu, {
6552
- trigger: "click-hover",
6553
- ...componentsProps?.Menu,
6554
- children: [
6555
- /* @__PURE__ */ jsx15(Menu.Target, {
6556
- children: /* @__PURE__ */ jsx15(Box2, {
6557
- children: targetElement
6558
- })
6559
- }),
6560
- /* @__PURE__ */ jsxs2(Menu.Dropdown, {
6550
+ });
6551
+ };
6552
+ const isRoot = isValidElement2(target);
6553
+ const isLeaf = elements === undefined || elements.length === 0;
6554
+ const Menu = isRoot ? MantineMenu : MantineMenu.Sub;
6555
+ const menuProps = isRoot ? { trigger: "click-hover", ...componentsProps?.Menu } : { ...componentsProps?.MenuSub };
6556
+ return /* @__PURE__ */ jsx15(Transition, {
6557
+ mounted: isRoot ? true : target.mounted ?? true,
6558
+ ...componentsProps?.transition,
6559
+ children: (transitionStyle) => {
6560
+ if (isLeaf) {
6561
+ if (isRoot) {
6562
+ return target;
6563
+ }
6564
+ return item(target, transitionStyle);
6565
+ }
6566
+ return /* @__PURE__ */ jsxs2(Menu, {
6567
+ ...menuProps,
6561
6568
  children: [
6562
- label !== undefined && /* @__PURE__ */ jsx15(Menu.Label, {
6563
- children: label
6569
+ /* @__PURE__ */ jsx15(Menu.Target, {
6570
+ children: isRoot ? /* @__PURE__ */ jsx15(Box2, {
6571
+ ...componentsProps?.rootTargetContainer,
6572
+ children: target
6573
+ }) : item(target, transitionStyle)
6564
6574
  }),
6565
- elements.map((element, i) => /* @__PURE__ */ jsx15(NavigationMenu, {
6566
- target: item(element),
6567
- elements: element.children,
6568
- componentsProps
6569
- }, `navigation-menu-${i}`))
6575
+ /* @__PURE__ */ jsxs2(Menu.Dropdown, {
6576
+ children: [
6577
+ label !== undefined && /* @__PURE__ */ jsx15(MantineMenu.Label, {
6578
+ children: label
6579
+ }),
6580
+ elements.map((element, i) => /* @__PURE__ */ jsx15(NavigationMenu, {
6581
+ target: element,
6582
+ elements: element.children,
6583
+ componentsProps
6584
+ }, `navigation-menu-${i}`))
6585
+ ]
6586
+ })
6570
6587
  ]
6571
- })
6572
- ]
6588
+ });
6589
+ }
6573
6590
  });
6574
6591
  }
6575
6592
 
@@ -7373,7 +7390,7 @@ import {
7373
7390
  Chip as Chip2,
7374
7391
  Divider,
7375
7392
  Flex as Flex2,
7376
- Menu as Menu2,
7393
+ Menu,
7377
7394
  Text,
7378
7395
  useMantineTheme as useMantineTheme3
7379
7396
  } from "@mantine/core";
@@ -7408,7 +7425,7 @@ function Page({
7408
7425
  }
7409
7426
  }, []);
7410
7427
  return /* @__PURE__ */ jsx25(pageContext.Provider, {
7411
- value: { name: name ?? pathname, pageId, ...config },
7428
+ value: { name: name ?? pageId, pageId, ...config },
7412
7429
  children: /* @__PURE__ */ jsx25(PageContainer, {
7413
7430
  ...componentsProps?.PageContainer,
7414
7431
  children: /* @__PURE__ */ jsx25(Stack3, {
@@ -7519,7 +7536,8 @@ function WidgetSelectionHeader({
7519
7536
  children: title ?? page.name
7520
7537
  }),
7521
7538
  /* @__PURE__ */ jsx27(Divider, {
7522
- orientation: "vertical"
7539
+ orientation: "vertical",
7540
+ ...componentsProps?.divider
7523
7541
  }),
7524
7542
  isPageRegistered(page.pageId) && /* @__PURE__ */ jsx27(ScrollableChipGroup, {
7525
7543
  value: selectedWidgets,
@@ -7534,11 +7552,11 @@ function WidgetSelectionHeader({
7534
7552
  if (!widget) {
7535
7553
  return;
7536
7554
  }
7537
- return /* @__PURE__ */ jsxs8(Menu2, {
7555
+ return /* @__PURE__ */ jsxs8(Menu, {
7538
7556
  trigger: "hover",
7539
7557
  ...componentsProps?.widgetMenu,
7540
7558
  children: [
7541
- /* @__PURE__ */ jsx27(Menu2.Target, {
7559
+ /* @__PURE__ */ jsx27(Menu.Target, {
7542
7560
  children: /* @__PURE__ */ jsx27(Box6, {
7543
7561
  children: /* @__PURE__ */ jsx27(Chip2, {
7544
7562
  variant: selectedWidgets.includes(widgetId) ? "filled" : "outline",
@@ -7560,9 +7578,9 @@ function WidgetSelectionHeader({
7560
7578
  })
7561
7579
  })
7562
7580
  }),
7563
- /* @__PURE__ */ jsxs8(Menu2.Dropdown, {
7581
+ /* @__PURE__ */ jsxs8(Menu.Dropdown, {
7564
7582
  children: [
7565
- /* @__PURE__ */ jsx27(Menu2.Item, {
7583
+ /* @__PURE__ */ jsx27(Menu.Item, {
7566
7584
  leftSection: /* @__PURE__ */ jsx27(IconNavigation, {
7567
7585
  ...theme.componentsProps.icons.small
7568
7586
  }),
@@ -7573,7 +7591,7 @@ function WidgetSelectionHeader({
7573
7591
  disabled: !widget.selected,
7574
7592
  children: "Scroll to widget"
7575
7593
  }),
7576
- /* @__PURE__ */ jsx27(Menu2.Item, {
7594
+ /* @__PURE__ */ jsx27(Menu.Item, {
7577
7595
  leftSection: /* @__PURE__ */ jsx27(IconFocus, {
7578
7596
  ...theme.componentsProps.icons.small
7579
7597
  }),
@@ -7807,6 +7825,7 @@ function AlertMinimal({
7807
7825
  icon: Icon4 ? /* @__PURE__ */ jsx30(Icon4, {
7808
7826
  ...import_lodash16.merge({}, theme.componentsProps.icons[iconSize], componentsProps?.icon)
7809
7827
  }) : undefined,
7828
+ ...componentsProps?.alert,
7810
7829
  style: import_lodash16.merge(transitionStyle, componentsProps?.alert?.style),
7811
7830
  children: [
7812
7831
  text,
@@ -5664,7 +5664,12 @@ function UserExperienceProviderWrapper({
5664
5664
  initialValue
5665
5665
  }) {
5666
5666
  const [cookies, setCookie] = import_react_cookie.useCookies();
5667
- const initialUserExperience = import_lodash3.merge(defaultUserExperience, initialValue);
5667
+ const initialUserExperience = import_lodash3.mergeWith({}, defaultUserExperience, initialValue, (_objValue, srcValue) => {
5668
+ if (Array.isArray(srcValue)) {
5669
+ return [...srcValue];
5670
+ }
5671
+ return;
5672
+ });
5668
5673
  const [userExperience, setUserExperience] = import_react5.useState(initialUserExperience);
5669
5674
  const [processedCookie, setProcessedCookie] = import_react5.useState(false);
5670
5675
  const updateUserExperience = (p) => {
@@ -6043,7 +6048,7 @@ function FooterMinimal({
6043
6048
  ...componentsProps?.container,
6044
6049
  children: /* @__PURE__ */ jsx_runtime13.jsx(import_core6.Center, {
6045
6050
  children: /* @__PURE__ */ jsx_runtime13.jsx(Icon2, {
6046
- color: "var(--mantine-color-default-border)",
6051
+ color: "var(--mantine-color-disabled)",
6047
6052
  ...theme.componentsProps.icons.huge,
6048
6053
  ...componentsProps?.icon
6049
6054
  })
@@ -6110,10 +6115,10 @@ function NavigationMenu({
6110
6115
  const mantineTheme = import_core7.useMantineTheme();
6111
6116
  const router = useRemoraidRouter();
6112
6117
  const { pathname } = router;
6113
- const item = (element) => /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Transition, {
6114
- mounted: element.mounted ?? true,
6115
- ...componentsProps?.transition,
6116
- children: (transitionStyle) => /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Menu.Item, {
6118
+ const item = (element, style) => {
6119
+ const isLeaf2 = element.children === undefined || element.children.length === 0;
6120
+ const Menu2 = isLeaf2 ? import_core7.Menu : import_core7.Menu.Sub;
6121
+ return /* @__PURE__ */ jsx_runtime15.jsx(Menu2.Item, {
6117
6122
  leftSection: element.icon ? /* @__PURE__ */ jsx_runtime15.jsx(element.icon, {
6118
6123
  ...theme.componentsProps.icons.small
6119
6124
  }) : undefined,
@@ -6126,36 +6131,48 @@ function NavigationMenu({
6126
6131
  element.onClick(e);
6127
6132
  }
6128
6133
  },
6129
- style: transitionStyle,
6134
+ style,
6130
6135
  children: element.label
6131
- })
6132
- });
6133
- const targetElement = import_react12.isValidElement(target) ? target : item(target);
6134
- if (elements === undefined || elements.length === 0) {
6135
- return targetElement;
6136
- }
6137
- return /* @__PURE__ */ jsx_runtime15.jsxs(import_core7.Menu, {
6138
- trigger: "click-hover",
6139
- ...componentsProps?.Menu,
6140
- children: [
6141
- /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Menu.Target, {
6142
- children: /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Box, {
6143
- children: targetElement
6144
- })
6145
- }),
6146
- /* @__PURE__ */ jsx_runtime15.jsxs(import_core7.Menu.Dropdown, {
6136
+ });
6137
+ };
6138
+ const isRoot = import_react12.isValidElement(target);
6139
+ const isLeaf = elements === undefined || elements.length === 0;
6140
+ const Menu = isRoot ? import_core7.Menu : import_core7.Menu.Sub;
6141
+ const menuProps = isRoot ? { trigger: "click-hover", ...componentsProps?.Menu } : { ...componentsProps?.MenuSub };
6142
+ return /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Transition, {
6143
+ mounted: isRoot ? true : target.mounted ?? true,
6144
+ ...componentsProps?.transition,
6145
+ children: (transitionStyle) => {
6146
+ if (isLeaf) {
6147
+ if (isRoot) {
6148
+ return target;
6149
+ }
6150
+ return item(target, transitionStyle);
6151
+ }
6152
+ return /* @__PURE__ */ jsx_runtime15.jsxs(Menu, {
6153
+ ...menuProps,
6147
6154
  children: [
6148
- label !== undefined && /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Menu.Label, {
6149
- children: label
6155
+ /* @__PURE__ */ jsx_runtime15.jsx(Menu.Target, {
6156
+ children: isRoot ? /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Box, {
6157
+ ...componentsProps?.rootTargetContainer,
6158
+ children: target
6159
+ }) : item(target, transitionStyle)
6150
6160
  }),
6151
- elements.map((element, i) => /* @__PURE__ */ jsx_runtime15.jsx(NavigationMenu, {
6152
- target: item(element),
6153
- elements: element.children,
6154
- componentsProps
6155
- }, `navigation-menu-${i}`))
6161
+ /* @__PURE__ */ jsx_runtime15.jsxs(Menu.Dropdown, {
6162
+ children: [
6163
+ label !== undefined && /* @__PURE__ */ jsx_runtime15.jsx(import_core7.Menu.Label, {
6164
+ children: label
6165
+ }),
6166
+ elements.map((element, i) => /* @__PURE__ */ jsx_runtime15.jsx(NavigationMenu, {
6167
+ target: element,
6168
+ elements: element.children,
6169
+ componentsProps
6170
+ }, `navigation-menu-${i}`))
6171
+ ]
6172
+ })
6156
6173
  ]
6157
- })
6158
- ]
6174
+ });
6175
+ }
6159
6176
  });
6160
6177
  }
6161
6178
 
@@ -7100,6 +7117,7 @@ function AlertMinimal({
7100
7117
  icon: Icon4 ? /* @__PURE__ */ jsx_runtime30.jsx(Icon4, {
7101
7118
  ...import_lodash16.merge({}, theme.componentsProps.icons[iconSize], componentsProps?.icon)
7102
7119
  }) : undefined,
7120
+ ...componentsProps?.alert,
7103
7121
  style: import_lodash16.merge(transitionStyle, componentsProps?.alert?.style),
7104
7122
  children: [
7105
7123
  text,
@@ -8295,6 +8313,7 @@ var TextControl_default = TextControl;
8295
8313
  // src/jsonforms/renderers/TimestampControl.tsx
8296
8314
  var import_react40 = require("@jsonforms/react");
8297
8315
  var import_dates = require("@mantine/dates");
8316
+ var import_dayjs = __toESM(require("dayjs"));
8298
8317
  var jsx_runtime52 = require("react/jsx-runtime");
8299
8318
  function PlainTimestampControl2({
8300
8319
  data,
@@ -8308,15 +8327,14 @@ function PlainTimestampControl2({
8308
8327
  formOptions: { withDescriptions }
8309
8328
  } = useFormOptions();
8310
8329
  return /* @__PURE__ */ jsx_runtime52.jsx(jsx_runtime52.Fragment, {
8311
- children: /* @__PURE__ */ jsx_runtime52.jsx(import_dates.DatePickerInput, {
8330
+ children: /* @__PURE__ */ jsx_runtime52.jsx(import_dates.DateTimePicker, {
8312
8331
  variant: "default",
8313
8332
  label,
8314
- placeholder: "Pick a date",
8315
- value: new Date(data * 1000),
8333
+ placeholder: "Pick date and time",
8334
+ value: data === null || data === undefined ? data : import_dates.toDateTimeString(new Date(data * 1000)),
8335
+ withSeconds: true,
8316
8336
  onChange: (newValue) => {
8317
- if (newValue) {
8318
- handleChange(path, newValue.getTime() / 1000);
8319
- }
8337
+ handleChange(path, newValue === null || newValue === undefined ? newValue : import_dayjs.default(newValue).toDate().getTime() / 1000);
8320
8338
  },
8321
8339
  required,
8322
8340
  description: withDescriptions ? schema.description || null : null
@@ -5649,7 +5649,12 @@ function UserExperienceProviderWrapper({
5649
5649
  initialValue
5650
5650
  }) {
5651
5651
  const [cookies, setCookie] = useCookies();
5652
- const initialUserExperience = import_lodash3.merge(defaultUserExperience, initialValue);
5652
+ const initialUserExperience = import_lodash3.mergeWith({}, defaultUserExperience, initialValue, (_objValue, srcValue) => {
5653
+ if (Array.isArray(srcValue)) {
5654
+ return [...srcValue];
5655
+ }
5656
+ return;
5657
+ });
5653
5658
  const [userExperience, setUserExperience] = useState3(initialUserExperience);
5654
5659
  const [processedCookie, setProcessedCookie] = useState3(false);
5655
5660
  const updateUserExperience = (p) => {
@@ -6044,7 +6049,7 @@ function FooterMinimal({
6044
6049
  ...componentsProps?.container,
6045
6050
  children: /* @__PURE__ */ jsx13(Center, {
6046
6051
  children: /* @__PURE__ */ jsx13(Icon2, {
6047
- color: "var(--mantine-color-default-border)",
6052
+ color: "var(--mantine-color-disabled)",
6048
6053
  ...theme.componentsProps.icons.huge,
6049
6054
  ...componentsProps?.icon
6050
6055
  })
@@ -6106,7 +6111,7 @@ var import_lodash8 = __toESM(require_lodash(), 1);
6106
6111
  // src/core/components/AppShell/Navbar/NavbarMinimal/NavbarMinimalContent/NavigationMenu/index.tsx
6107
6112
  import {
6108
6113
  Box as Box2,
6109
- Menu,
6114
+ Menu as MantineMenu,
6110
6115
  Transition,
6111
6116
  useMantineTheme as useMantineTheme2
6112
6117
  } from "@mantine/core";
@@ -6122,10 +6127,10 @@ function NavigationMenu({
6122
6127
  const mantineTheme = useMantineTheme2();
6123
6128
  const router = useRemoraidRouter();
6124
6129
  const { pathname } = router;
6125
- const item = (element) => /* @__PURE__ */ jsx15(Transition, {
6126
- mounted: element.mounted ?? true,
6127
- ...componentsProps?.transition,
6128
- children: (transitionStyle) => /* @__PURE__ */ jsx15(Menu.Item, {
6130
+ const item = (element, style) => {
6131
+ const isLeaf2 = element.children === undefined || element.children.length === 0;
6132
+ const Menu2 = isLeaf2 ? MantineMenu : MantineMenu.Sub;
6133
+ return /* @__PURE__ */ jsx15(Menu2.Item, {
6129
6134
  leftSection: element.icon ? /* @__PURE__ */ jsx15(element.icon, {
6130
6135
  ...theme.componentsProps.icons.small
6131
6136
  }) : undefined,
@@ -6138,36 +6143,48 @@ function NavigationMenu({
6138
6143
  element.onClick(e);
6139
6144
  }
6140
6145
  },
6141
- style: transitionStyle,
6146
+ style,
6142
6147
  children: element.label
6143
- })
6144
- });
6145
- const targetElement = isValidElement2(target) ? target : item(target);
6146
- if (elements === undefined || elements.length === 0) {
6147
- return targetElement;
6148
- }
6149
- return /* @__PURE__ */ jsxs2(Menu, {
6150
- trigger: "click-hover",
6151
- ...componentsProps?.Menu,
6152
- children: [
6153
- /* @__PURE__ */ jsx15(Menu.Target, {
6154
- children: /* @__PURE__ */ jsx15(Box2, {
6155
- children: targetElement
6156
- })
6157
- }),
6158
- /* @__PURE__ */ jsxs2(Menu.Dropdown, {
6148
+ });
6149
+ };
6150
+ const isRoot = isValidElement2(target);
6151
+ const isLeaf = elements === undefined || elements.length === 0;
6152
+ const Menu = isRoot ? MantineMenu : MantineMenu.Sub;
6153
+ const menuProps = isRoot ? { trigger: "click-hover", ...componentsProps?.Menu } : { ...componentsProps?.MenuSub };
6154
+ return /* @__PURE__ */ jsx15(Transition, {
6155
+ mounted: isRoot ? true : target.mounted ?? true,
6156
+ ...componentsProps?.transition,
6157
+ children: (transitionStyle) => {
6158
+ if (isLeaf) {
6159
+ if (isRoot) {
6160
+ return target;
6161
+ }
6162
+ return item(target, transitionStyle);
6163
+ }
6164
+ return /* @__PURE__ */ jsxs2(Menu, {
6165
+ ...menuProps,
6159
6166
  children: [
6160
- label !== undefined && /* @__PURE__ */ jsx15(Menu.Label, {
6161
- children: label
6167
+ /* @__PURE__ */ jsx15(Menu.Target, {
6168
+ children: isRoot ? /* @__PURE__ */ jsx15(Box2, {
6169
+ ...componentsProps?.rootTargetContainer,
6170
+ children: target
6171
+ }) : item(target, transitionStyle)
6162
6172
  }),
6163
- elements.map((element, i) => /* @__PURE__ */ jsx15(NavigationMenu, {
6164
- target: item(element),
6165
- elements: element.children,
6166
- componentsProps
6167
- }, `navigation-menu-${i}`))
6173
+ /* @__PURE__ */ jsxs2(Menu.Dropdown, {
6174
+ children: [
6175
+ label !== undefined && /* @__PURE__ */ jsx15(MantineMenu.Label, {
6176
+ children: label
6177
+ }),
6178
+ elements.map((element, i) => /* @__PURE__ */ jsx15(NavigationMenu, {
6179
+ target: element,
6180
+ elements: element.children,
6181
+ componentsProps
6182
+ }, `navigation-menu-${i}`))
6183
+ ]
6184
+ })
6168
6185
  ]
6169
- })
6170
- ]
6186
+ });
6187
+ }
6171
6188
  });
6172
6189
  }
6173
6190
 
@@ -6971,7 +6988,7 @@ import {
6971
6988
  Chip as Chip2,
6972
6989
  Divider,
6973
6990
  Flex as Flex2,
6974
- Menu as Menu2,
6991
+ Menu,
6975
6992
  Text,
6976
6993
  useMantineTheme as useMantineTheme3
6977
6994
  } from "@mantine/core";
@@ -7157,6 +7174,7 @@ function AlertMinimal({
7157
7174
  icon: Icon4 ? /* @__PURE__ */ jsx30(Icon4, {
7158
7175
  ...import_lodash16.merge({}, theme.componentsProps.icons[iconSize], componentsProps?.icon)
7159
7176
  }) : undefined,
7177
+ ...componentsProps?.alert,
7160
7178
  style: import_lodash16.merge(transitionStyle, componentsProps?.alert?.style),
7161
7179
  children: [
7162
7180
  text,
@@ -8454,7 +8472,8 @@ var TextControl_default = TextControl;
8454
8472
 
8455
8473
  // src/jsonforms/renderers/TimestampControl.tsx
8456
8474
  import { withJsonFormsControlProps as withJsonFormsControlProps9 } from "@jsonforms/react";
8457
- import { DatePickerInput } from "@mantine/dates";
8475
+ import { DateTimePicker, toDateTimeString } from "@mantine/dates";
8476
+ import dayjs from "dayjs";
8458
8477
  import { jsx as jsx52, Fragment as Fragment10 } from "react/jsx-runtime";
8459
8478
  function PlainTimestampControl2({
8460
8479
  data,
@@ -8468,15 +8487,14 @@ function PlainTimestampControl2({
8468
8487
  formOptions: { withDescriptions }
8469
8488
  } = useFormOptions();
8470
8489
  return /* @__PURE__ */ jsx52(Fragment10, {
8471
- children: /* @__PURE__ */ jsx52(DatePickerInput, {
8490
+ children: /* @__PURE__ */ jsx52(DateTimePicker, {
8472
8491
  variant: "default",
8473
8492
  label,
8474
- placeholder: "Pick a date",
8475
- value: new Date(data * 1000),
8493
+ placeholder: "Pick date and time",
8494
+ value: data === null || data === undefined ? data : toDateTimeString(new Date(data * 1000)),
8495
+ withSeconds: true,
8476
8496
  onChange: (newValue) => {
8477
- if (newValue) {
8478
- handleChange(path, newValue.getTime() / 1000);
8479
- }
8497
+ handleChange(path, newValue === null || newValue === undefined ? newValue : dayjs(newValue).toDate().getTime() / 1000);
8480
8498
  },
8481
8499
  required,
8482
8500
  description: withDescriptions ? schema.description || null : null
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remoraid",
3
- "version": "2.44.2",
3
+ "version": "3.1.1",
4
4
  "author": "Konrad Goldammer",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,32 +8,48 @@
8
8
  },
9
9
  "main": "./dist/index.cjs",
10
10
  "module": "./dist/index.js",
11
+ "dependencies": {
12
+ "clsx": "^2.1.1",
13
+ "lodash": "^4.17.21",
14
+ "type-fest": "^4.41.0"
15
+ },
11
16
  "devDependencies": {
12
- "@types/bun": "^1.1.10",
17
+ "@jsonforms/core": "^3.5.1",
18
+ "@jsonforms/react": "^3.5.1",
19
+ "@jsonforms/vanilla-renderers": "^3.5.1",
20
+ "@mantine/core": "^9.1.1",
21
+ "@mantine/dates": "^9.1.1",
22
+ "@mantine/hooks": "^9.1.1",
23
+ "@mantine/modals": "^9.1.1",
24
+ "@tabler/icons-react": "^3.42.0",
25
+ "@types/bun": "^1.3.13",
13
26
  "@types/css-modules": "^1.0.5",
14
27
  "@types/lodash": "^4.17.17",
15
- "@types/react": "^19.1.2",
16
- "@types/react-dom": "^19.1.6",
28
+ "@types/react": "^19.2.14",
29
+ "@types/react-dom": "^19.2.3",
17
30
  "bun-dts": "^0.1.22",
18
- "next": "16.0.3",
19
- "react": "^19.1.0",
31
+ "dayjs": "^1.11.0",
32
+ "next": "^16.0.3",
33
+ "react": "^19.2.0",
20
34
  "react-cookie": "^8.0.1",
21
- "react-router-dom": "^7.12.0"
35
+ "react-dom": "^19.2.0",
36
+ "react-router-dom": "^7.14.2"
22
37
  },
23
38
  "peerDependencies": {
24
- "react": "^19.1.0",
25
- "react-dom": "^19.1.0",
26
- "react-cookie": "^8.0.1",
27
- "next": "16.0.3",
28
- "react-router-dom": "^7.12.0",
29
- "@mantine/core": "^7.17.4",
30
- "@mantine/hooks": "^7.17.4",
31
- "@mantine/dates": "7.17.4",
32
- "@mantine/modals": "7.17.4",
33
- "@tabler/icons-react": "^3.31.0",
34
39
  "@jsonforms/core": "^3.5.1",
35
40
  "@jsonforms/react": "^3.5.1",
36
- "@jsonforms/vanilla-renderers": "^3.5.1"
41
+ "@jsonforms/vanilla-renderers": "^3.5.1",
42
+ "@mantine/core": "^9.1.1",
43
+ "@mantine/dates": "^9.1.1",
44
+ "@mantine/hooks": "^9.1.1",
45
+ "@mantine/modals": "^9.1.1",
46
+ "@tabler/icons-react": "^3.42.0",
47
+ "dayjs": "^1.11.0",
48
+ "next": "^16.0.3",
49
+ "react": "^19.2.0",
50
+ "react-cookie": "^8.0.1",
51
+ "react-dom": "^19.2.0",
52
+ "react-router-dom": "^7.14.2"
37
53
  },
38
54
  "peerDependenciesMeta": {
39
55
  "next": {
@@ -93,10 +109,5 @@
93
109
  "build": "bun run build.ts",
94
110
  "prepublishOnly": "bun run build"
95
111
  },
96
- "type": "module",
97
- "dependencies": {
98
- "clsx": "^2.1.1",
99
- "lodash": "^4.17.21",
100
- "type-fest": "^4.41.0"
101
- }
112
+ "type": "module"
102
113
  }