@edifice.io/react 2.6.9 → 2.6.10-develop-b2school.20261019104630

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.
Files changed (137) hide show
  1. package/dist/components/Layout/Layout.js +12 -4
  2. package/dist/components/Layout/components/Header.js +4 -4
  3. package/dist/components/Layout/components/NavLink.d.ts +3 -3
  4. package/dist/components/Layout/components/NavLink.js +5 -3
  5. package/dist/components/RadioTile/RadioTile.d.ts +35 -0
  6. package/dist/components/RadioTile/RadioTile.js +22 -0
  7. package/dist/components/RadioTile/index.d.ts +2 -0
  8. package/dist/components/Tree/utilities/tree.js +21 -1
  9. package/dist/components/index.d.ts +1 -0
  10. package/dist/homepage.js +62 -24
  11. package/dist/hooks/index.d.ts +2 -0
  12. package/dist/hooks/useBackground/useBackground.d.ts +1 -1
  13. package/dist/hooks/useCarbonioUnread/index.d.ts +1 -0
  14. package/dist/hooks/useCarbonioUnread/useCarbonioUnread.d.ts +5 -0
  15. package/dist/hooks/useCarbonioUnread/useCarbonioUnread.js +24 -0
  16. package/dist/hooks/useNextcloudSearch/index.d.ts +1 -0
  17. package/dist/hooks/useNextcloudSearch/useNextcloudSearch.d.ts +14 -0
  18. package/dist/hooks/useNextcloudSearch/useNextcloudSearch.js +64 -0
  19. package/dist/hooks/useZendeskGuide/useZendeskGuide.d.ts +2 -6
  20. package/dist/hooks/useZendeskGuide/useZendeskGuide.js +11 -8
  21. package/dist/icons.js +404 -402
  22. package/dist/index.js +160 -150
  23. package/dist/modules/HelpZone/HelpZone.js +6 -8
  24. package/dist/modules/HelpZone/HelpZoneContainer.js +2 -5
  25. package/dist/modules/homepage/components/Agenda/Agenda.d.ts +10 -0
  26. package/dist/modules/homepage/components/Agenda/Agenda.js +54 -0
  27. package/dist/modules/homepage/components/Agenda/AgendaContainer.d.ts +1 -0
  28. package/dist/modules/homepage/components/Agenda/AgendaContainer.js +14 -0
  29. package/dist/modules/homepage/components/Agenda/AgendaEventCard.d.ts +10 -0
  30. package/dist/modules/homepage/components/Agenda/AgendaEventCard.js +30 -0
  31. package/dist/modules/homepage/components/Agenda/hooks/useAgendaContainer.d.ts +14 -0
  32. package/dist/modules/homepage/components/Agenda/hooks/useAgendaContainer.js +27 -0
  33. package/dist/modules/homepage/components/Agenda/index.d.ts +3 -0
  34. package/dist/modules/homepage/components/Agenda/services/api/agendaService.d.ts +24 -0
  35. package/dist/modules/homepage/components/Agenda/services/api/agendaService.js +45 -0
  36. package/dist/modules/homepage/components/Agenda/services/api/index.d.ts +4 -0
  37. package/dist/modules/homepage/components/Agenda/services/api/index.js +5 -0
  38. package/dist/modules/homepage/components/Agenda/services/queries/agenda.d.ts +19 -0
  39. package/dist/modules/homepage/components/Agenda/services/queries/agenda.js +26 -0
  40. package/dist/modules/homepage/components/BriefMe/BriefMe.d.ts +9 -0
  41. package/dist/modules/homepage/components/BriefMe/BriefMe.js +59 -0
  42. package/dist/modules/homepage/components/BriefMe/BriefMeContainer.d.ts +4 -0
  43. package/dist/modules/homepage/components/BriefMe/BriefMeContainer.js +17 -0
  44. package/dist/modules/homepage/components/BriefMe/index.d.ts +4 -0
  45. package/dist/modules/homepage/components/BriefMe/types.d.ts +17 -0
  46. package/dist/modules/homepage/components/BriefMe/types.js +8 -0
  47. package/dist/modules/homepage/components/BriefMe/useBriefMe.d.ts +31 -0
  48. package/dist/modules/homepage/components/BriefMe/useBriefMe.js +51 -0
  49. package/dist/modules/homepage/components/Cantine/Cantine.d.ts +7 -0
  50. package/dist/modules/homepage/components/Cantine/Cantine.js +44 -0
  51. package/dist/modules/homepage/components/Cantine/CantineContainer.d.ts +4 -0
  52. package/dist/modules/homepage/components/Cantine/CantineContainer.js +18 -0
  53. package/dist/modules/homepage/components/Cantine/CantineModal.d.ts +24 -0
  54. package/dist/modules/homepage/components/Cantine/CantineModal.js +88 -0
  55. package/dist/modules/homepage/components/Cantine/CantineModalContainer.d.ts +7 -0
  56. package/dist/modules/homepage/components/Cantine/CantineModalContainer.js +12 -0
  57. package/dist/modules/homepage/components/Cantine/components/CantineLegend.d.ts +5 -0
  58. package/dist/modules/homepage/components/Cantine/components/CantineLegend.js +22 -0
  59. package/dist/modules/homepage/components/Cantine/components/CantineMenuSection.d.ts +6 -0
  60. package/dist/modules/homepage/components/Cantine/components/CantineMenuSection.js +28 -0
  61. package/dist/modules/homepage/components/Cantine/components/cantineLabels.d.ts +12 -0
  62. package/dist/modules/homepage/components/Cantine/components/cantineLabels.js +60 -0
  63. package/dist/modules/homepage/components/Cantine/hooks/useCantine.d.ts +11 -0
  64. package/dist/modules/homepage/components/Cantine/hooks/useCantine.js +20 -0
  65. package/dist/modules/homepage/components/Cantine/hooks/useCantineMenu.d.ts +24 -0
  66. package/dist/modules/homepage/components/Cantine/hooks/useCantineMenu.js +65 -0
  67. package/dist/modules/homepage/components/Cantine/hooks/useCantineModal.d.ts +23 -0
  68. package/dist/modules/homepage/components/Cantine/hooks/useCantineModal.js +43 -0
  69. package/dist/modules/homepage/components/Cantine/index.d.ts +7 -0
  70. package/dist/modules/homepage/components/Cantine/types.d.ts +42 -0
  71. package/dist/modules/homepage/components/Communities/Communities.js +4 -4
  72. package/dist/modules/homepage/components/GenerationHdf/GenerationHdf.d.ts +16 -0
  73. package/dist/modules/homepage/components/GenerationHdf/GenerationHdf.js +48 -0
  74. package/dist/modules/homepage/components/GenerationHdf/GenerationHdfContainer.d.ts +4 -0
  75. package/dist/modules/homepage/components/GenerationHdf/GenerationHdfContainer.js +12 -0
  76. package/dist/modules/homepage/components/GenerationHdf/formatSolde.d.ts +1 -0
  77. package/dist/modules/homepage/components/GenerationHdf/formatSolde.js +6 -0
  78. package/dist/modules/homepage/components/GenerationHdf/index.d.ts +3 -0
  79. package/dist/modules/homepage/components/GenerationHdf/useGenerationHdf.d.ts +10 -0
  80. package/dist/modules/homepage/components/GenerationHdf/useGenerationHdf.js +68 -0
  81. package/dist/modules/homepage/components/Header/Header.js +37 -14
  82. package/dist/modules/homepage/components/Header/MyAppsPopover.d.ts +5 -0
  83. package/dist/modules/homepage/components/Header/MyAppsPopover.js +28 -0
  84. package/dist/modules/homepage/components/Header/useSafeHoverPopover.js +32 -0
  85. package/dist/modules/homepage/components/HomeCard/HomeCardHeader.d.ts +5 -1
  86. package/dist/modules/homepage/components/HomeCard/HomeCardHeader.js +1 -1
  87. package/dist/modules/homepage/components/MessageFlashList/MessageFlash.js +1 -1
  88. package/dist/modules/homepage/components/Notifications/NotificationList.js +5 -5
  89. package/dist/modules/homepage/components/Notifications/NotificationSkeleton.js +2 -2
  90. package/dist/modules/homepage/components/Notifications/components/NotificationFilterMenu.js +1 -5
  91. package/dist/modules/homepage/components/Notifications/components/NotificationFilterModal.js +10 -12
  92. package/dist/modules/homepage/components/Notifications/components/NotificationOptionsMenu.js +3 -9
  93. package/dist/modules/homepage/components/Notifications/components/ReportNotificationModal.js +6 -12
  94. package/dist/modules/homepage/components/Notifications/components/notificationAdapter.js +12 -10
  95. package/dist/modules/homepage/components/Notifications/hooks/useNotificationList.js +9 -10
  96. package/dist/modules/homepage/components/Qwant/Qwant.d.ts +4 -0
  97. package/dist/modules/homepage/components/Qwant/Qwant.js +41 -0
  98. package/dist/modules/homepage/components/Qwant/QwantContainer.d.ts +1 -0
  99. package/dist/modules/homepage/components/Qwant/QwantContainer.js +10 -0
  100. package/dist/modules/homepage/components/Qwant/index.d.ts +3 -0
  101. package/dist/modules/homepage/components/SchoolSpace/SchoolSpaceContainer.js +1 -1
  102. package/dist/modules/homepage/components/Universalis/Universalis.d.ts +8 -0
  103. package/dist/modules/homepage/components/Universalis/Universalis.js +62 -0
  104. package/dist/modules/homepage/components/Universalis/UniversalisContainer.d.ts +1 -0
  105. package/dist/modules/homepage/components/Universalis/UniversalisContainer.js +16 -0
  106. package/dist/modules/homepage/components/Universalis/index.d.ts +3 -0
  107. package/dist/modules/homepage/components/UserSpace/UserSpace.d.ts +3 -1
  108. package/dist/modules/homepage/components/UserSpace/UserSpace.js +13 -7
  109. package/dist/modules/homepage/components/UserSpace/UserSpaceContainer.d.ts +4 -2
  110. package/dist/modules/homepage/components/UserSpace/UserSpaceContainer.js +3 -2
  111. package/dist/modules/homepage/components/WidgetsPersonalizationPanel/WidgetToggle.d.ts +16 -0
  112. package/dist/modules/homepage/components/WidgetsPersonalizationPanel/WidgetToggle.js +15 -0
  113. package/dist/modules/homepage/components/WidgetsPersonalizationPanel/WidgetsPersonalizationPanel.d.ts +21 -0
  114. package/dist/modules/homepage/components/WidgetsPersonalizationPanel/WidgetsPersonalizationPanel.js +47 -0
  115. package/dist/modules/homepage/components/WidgetsPersonalizationPanel/index.d.ts +2 -0
  116. package/dist/modules/homepage/components/index.d.ts +8 -1
  117. package/dist/modules/homepage/{components/SchoolSpace → hooks}/useUserSchools.d.ts +2 -2
  118. package/dist/modules/homepage/{components/SchoolSpace → hooks}/useUserSchools.js +4 -4
  119. package/dist/modules/icons/components/IconAddWidget.d.ts +7 -0
  120. package/dist/modules/icons/components/IconAddWidget.js +12 -0
  121. package/dist/modules/icons/components/index.d.ts +1 -0
  122. package/dist/modules/multimedia/FileCard/NextcloudFileCard.d.ts +25 -0
  123. package/dist/modules/multimedia/FileCard/NextcloudFileCard.js +102 -0
  124. package/dist/modules/multimedia/FileCard/index.d.ts +2 -0
  125. package/dist/modules/multimedia/MediaLibrary/MediaLibrary.d.ts +2 -2
  126. package/dist/modules/multimedia/MediaLibrary/MediaLibrary.js +36 -11
  127. package/dist/modules/multimedia/MediaLibrary/innertabs/Nextcloud.d.ts +1 -0
  128. package/dist/modules/multimedia/MediaLibrary/innertabs/Nextcloud.js +48 -0
  129. package/dist/modules/multimedia/MediaLibrary/innertabs/index.d.ts +1 -0
  130. package/dist/modules/multimedia/MediaLibrary/innertabs/index.js +2 -0
  131. package/dist/modules/multimedia/Nextcloud/Nextcloud.d.ts +24 -0
  132. package/dist/modules/multimedia/Nextcloud/Nextcloud.js +120 -0
  133. package/dist/modules/multimedia/Nextcloud/index.d.ts +2 -0
  134. package/dist/modules/multimedia/Workspace/Workspace.js +8 -5
  135. package/dist/modules/multimedia/index.d.ts +1 -0
  136. package/dist/multimedia.js +16 -12
  137. package/package.json +6 -6
@@ -14,6 +14,7 @@ import useZendeskGuide from "../../hooks/useZendeskGuide/useZendeskGuide.js";
14
14
  import useCantoo from "../../hooks/useCantoo/useCantoo.js";
15
15
  import Alert from "../Alert/Alert.js";
16
16
  import ButtonBeta from "../ButtonBeta/ButtonBeta.js";
17
+ import HelpZone from "../../modules/HelpZone/HelpZone.js";
17
18
  const HeaderV2 = /* @__PURE__ */ lazy(() => import("../../modules/homepage/components/Header/Header.js")), Layout = ({
18
19
  children,
19
20
  headless = !1,
@@ -21,9 +22,10 @@ const HeaderV2 = /* @__PURE__ */ lazy(() => import("../../modules/homepage/compo
21
22
  className,
22
23
  ...restProps
23
24
  }) => {
25
+ var _a;
24
26
  const {
25
27
  theme
26
- } = useEdificeTheme(), override = useUiOverride("layout.header"), isHeaderV2 = (override == null ? void 0 : override.variant) === "v2", {
28
+ } = useEdificeTheme(), override = useUiOverride("layout.header"), isHeaderV2 = (override == null ? void 0 : override.variant) === "v2", isEdificeInProductHelp = ((_a = useUiOverride("layout.helpzone")) == null ? void 0 : _a.variant) === "edifice-in-product", {
27
29
  productOverride,
28
30
  background,
29
31
  isBackgroundImageOverridden,
@@ -36,8 +38,13 @@ const HeaderV2 = /* @__PURE__ */ lazy(() => import("../../modules/homepage/compo
36
38
  showCookiesConsent,
37
39
  handleConsultCookies,
38
40
  handleCloseCookiesConsent
39
- } = useCookiesConsent();
40
- useZendeskGuide(), useCantoo();
41
+ } = useCookiesConsent(), {
42
+ isReady: isHelpZoneReady,
43
+ isOpen: isHelpZoneOpen,
44
+ open: openHelpZone,
45
+ close: closeHelpZone
46
+ } = useZendeskGuide();
47
+ useCantoo();
41
48
  const classes = clsx("d-flex flex-column", {
42
49
  "bg-white": whiteBg,
43
50
  "container-fluid": !headless,
@@ -51,7 +58,8 @@ const HeaderV2 = /* @__PURE__ */ lazy(() => import("../../modules/homepage/compo
51
58
  renderNotificationsOverlay,
52
59
  /* @__PURE__ */ jsx("main", { className: classes, ...restProps, children }),
53
60
  renderToaster,
54
- renderCookies
61
+ renderCookies,
62
+ isEdificeInProductHelp && /* @__PURE__ */ jsx(HelpZone, { isReady: isHelpZoneReady, isOpen: isHelpZoneOpen, onOpen: openHelpZone, onClose: closeHelpZone })
55
63
  ] });
56
64
  };
57
65
  export {
@@ -138,7 +138,7 @@ const Header = ({
138
138
  /* @__PURE__ */ jsxs("ul", { className: "navbar-nav", children: [
139
139
  /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsx(NavLink, { link: "/timeline/timeline", translate: t("navbar.home"), children: /* @__PURE__ */ jsx(SvgIconHome, { color: "#fff" }) }) }),
140
140
  /* @__PURE__ */ jsxs(NavItem, { className: "position-relative", ref: appsRef, id: popoverAppsId, "aria-haspopup": "true", "aria-expanded": isAppsHovered, children: [
141
- /* @__PURE__ */ jsx(NavLink, { link: "/welcome", translate: t("navbar.applications"), children: /* @__PURE__ */ jsx(SvgIconMyApps, { color: "#fff" }) }),
141
+ /* @__PURE__ */ jsx(NavLink, { link: "/welcome", translate: t("navbar.applications"), "data-testid": "header-my-apps-button", children: /* @__PURE__ */ jsx(SvgIconMyApps, { color: "#fff" }) }),
142
142
  /* @__PURE__ */ jsxs(Popover, { className: "top-100 widget", id: popoverAppsId, isVisible: isAppsHovered, children: [
143
143
  /* @__PURE__ */ jsx(PopoverBody, { children: /* @__PURE__ */ jsx(WidgetAppsBody, { bookmarkedApps }) }),
144
144
  /* @__PURE__ */ jsx(PopoverFooter, { className: "widget-footer border-top border-ghost", children: /* @__PURE__ */ jsx(WidgetAppsFooter, {}) })
@@ -174,17 +174,17 @@ const Header = ({
174
174
  /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsxs("div", { className: "dropdown", children: [
175
175
  /* @__PURE__ */ jsx("button", { className: "nav-link btn btn-naked d-md-none", type: "button", "aria-controls": "dropdown-navbar", "aria-expanded": !isCollapsed, "aria-label": t("navbar.open.menu"), onClick: toggleCollapsedNav, children: /* @__PURE__ */ jsx(SvgIconRafterDown, { className: "icon rafter-down", width: "20", height: "20", color: "#fff" }) }),
176
176
  /* @__PURE__ */ jsxs("ul", { className: `dropdown-menu dropdown-menu-end ${isCollapsed ? "" : "show"}`, id: "dropdown-navbar", children: [
177
- communitiesWorkflow && /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsxs("a", { href: "/communities", className: "nav-link dropdown-item", children: [
177
+ communitiesWorkflow && /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsxs("a", { href: "/communities", className: "nav-link dropdown-item", "data-testid": "header-community-button", children: [
178
178
  /* @__PURE__ */ jsx(SvgIconCommunities, { className: "icon communities" }),
179
179
  /* @__PURE__ */ jsx("span", { className: "nav-text", children: t("navbar.community") })
180
180
  ] }) }),
181
181
  searchWorkflow ? /* @__PURE__ */ jsx(SearchEngine, {}) : null,
182
- /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsxs("a", { href: "/userbook/mon-compte", className: "nav-link dropdown-item", children: [
182
+ /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsxs("a", { href: "/userbook/mon-compte", className: "nav-link dropdown-item", "data-testid": "header-user-profile-button", children: [
183
183
  /* @__PURE__ */ jsx(Avatar, { alt: userName, size: "sm", src: userAvatar, variant: "circle", className: "bg-white", width: "32", height: "32" }),
184
184
  /* @__PURE__ */ jsx("span", { className: "nav-text", children: t("navbar.myaccount") })
185
185
  ] }) }),
186
186
  /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsx("hr", { className: "dropdown-divider" }) }),
187
- /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsxs("a", { href: "/auth/logout?callback=" + ((theme == null ? void 0 : theme.logoutCallback) ?? ""), className: "nav-link dropdown-item", children: [
187
+ /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsxs("a", { href: "/auth/logout?callback=" + ((theme == null ? void 0 : theme.logoutCallback) ?? ""), className: "nav-link dropdown-item", "data-testid": "header-logout-button", children: [
188
188
  /* @__PURE__ */ jsx(SvgIconDisconnect, { className: "icon logout" }),
189
189
  /* @__PURE__ */ jsx("span", { id: "logout-label", className: "nav-text", children: t("navbar.disconnect") })
190
190
  ] }) })
@@ -1,5 +1,5 @@
1
- import { ReactNode } from 'react';
2
- export interface NavLinkProps<T> {
1
+ import { ComponentPropsWithoutRef, ReactNode } from 'react';
2
+ export interface NavLinkProps<T> extends Omit<ComponentPropsWithoutRef<'a'>, 'className' | 'translate'> {
3
3
  /**
4
4
  * href link
5
5
  */
@@ -21,4 +21,4 @@ export interface NavLinkProps<T> {
21
21
  */
22
22
  button?: boolean;
23
23
  }
24
- export declare function NavLink({ link, className, children, translate, button, ...restProps }: NavLinkProps<string>): import("react/jsx-runtime").JSX.Element;
24
+ export declare const NavLink: import('react').ForwardRefExoticComponent<NavLinkProps<string> & import('react').RefAttributes<HTMLAnchorElement>>;
@@ -1,7 +1,8 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
2
3
  import clsx from "clsx";
3
4
  import VisuallyHidden from "../../VisuallyHidden/VisuallyHidden.js";
4
- function NavLink({
5
+ function NavLinkRender({
5
6
  link,
6
7
  className,
7
8
  children,
@@ -9,13 +10,14 @@ function NavLink({
9
10
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
10
11
  button,
11
12
  ...restProps
12
- }) {
13
+ }, ref) {
13
14
  const classes = clsx("nav-link", className);
14
- return /* @__PURE__ */ jsxs("a", { href: link, className: classes, ...restProps, children: [
15
+ return /* @__PURE__ */ jsxs("a", { ref, href: link, className: classes, ...restProps, children: [
15
16
  children,
16
17
  translate && /* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx("span", { className: "nav-text", children: translate }) })
17
18
  ] });
18
19
  }
20
+ const NavLink = /* @__PURE__ */ forwardRef(NavLinkRender);
19
21
  export {
20
22
  NavLink
21
23
  };
@@ -0,0 +1,35 @@
1
+ import { CSSProperties, InputHTMLAttributes, ReactNode } from 'react';
2
+ export interface RadioTileProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'children' | 'className' | 'style'> {
3
+ /**
4
+ * Label of the tile. Also used as the accessible name of the radio input.
5
+ */
6
+ label: ReactNode;
7
+ /**
8
+ * Optional image: an URL, or any React node (e.g. a background preview).
9
+ */
10
+ image?: string | ReactNode;
11
+ /**
12
+ * Layout of a tile with both an image and a label.
13
+ * Ignored when there is no image or when the label is hidden.
14
+ */
15
+ orientation?: 'horizontal' | 'vertical';
16
+ /**
17
+ * Visually hide the label (it stays available to screen readers).
18
+ * Use it with an `image` to render an image-only tile.
19
+ */
20
+ hideLabel?: boolean;
21
+ /**
22
+ * Additional CSS class names applied to the tile (root element).
23
+ */
24
+ className?: string;
25
+ /**
26
+ * Inline styles applied to the tile (root element).
27
+ */
28
+ style?: CSSProperties;
29
+ }
30
+ /**
31
+ * A radio input presented as a selectable tile, with a label, an image or both.
32
+ * Group tiles together by giving them the same `name`.
33
+ */
34
+ declare const RadioTile: import('react').ForwardRefExoticComponent<RadioTileProps & import('react').RefAttributes<HTMLInputElement>>;
35
+ export default RadioTile;
@@ -0,0 +1,22 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import clsx from "clsx";
4
+ const RadioTile = /* @__PURE__ */ forwardRef(({
5
+ label,
6
+ image,
7
+ orientation = "horizontal",
8
+ hideLabel = !1,
9
+ className,
10
+ style,
11
+ ...inputProps
12
+ }, ref) => {
13
+ const hasImage = image != null && image !== !1;
14
+ return /* @__PURE__ */ jsxs("label", { className: clsx("radio-tile", `radio-tile--${hasImage ? hideLabel ? "image" : orientation === "vertical" ? "vertical" : "horizontal" : "text"}`, className), style, children: [
15
+ /* @__PURE__ */ jsx("input", { ref, type: "radio", className: "radio-tile__input visually-hidden", ...inputProps }),
16
+ hasImage && /* @__PURE__ */ jsx("span", { className: "radio-tile__image", children: typeof image == "string" ? /* @__PURE__ */ jsx("img", { src: image, alt: "", loading: "lazy" }) : image }),
17
+ /* @__PURE__ */ jsx("span", { className: clsx("radio-tile__label", hideLabel && "visually-hidden"), children: label })
18
+ ] });
19
+ });
20
+ export {
21
+ RadioTile as default
22
+ };
@@ -0,0 +1,2 @@
1
+ export { default as RadioTile } from './RadioTile';
2
+ export * from './RadioTile';
@@ -16,6 +16,25 @@ function findNodeById(data, id) {
16
16
  }
17
17
  }
18
18
  }
19
+ function modifyNode(data, callback) {
20
+ return doModify(data, callback) || data;
21
+ }
22
+ function doModify(current, callback, parent) {
23
+ var _a;
24
+ const result = callback(current, parent);
25
+ if ((_a = result == null ? void 0 : result.children) != null && _a.length) {
26
+ const children = [];
27
+ for (const child of (result == null ? void 0 : result.children) || []) {
28
+ const res = doModify(child, callback, result);
29
+ res && children.push(res);
30
+ }
31
+ return {
32
+ ...result,
33
+ children
34
+ };
35
+ }
36
+ return result;
37
+ }
19
38
  function findPathById(tree, nodeId) {
20
39
  let path = [];
21
40
  function traverse(node, currentPath) {
@@ -40,5 +59,6 @@ function findPathById(tree, nodeId) {
40
59
  }
41
60
  export {
42
61
  findNodeById,
43
- findPathById
62
+ findPathById,
63
+ modifyNode
44
64
  };
@@ -45,6 +45,7 @@ export * from './PreventPropagation';
45
45
  export * from './PromotionCard';
46
46
  export * from './Radio';
47
47
  export * from './RadioCard';
48
+ export * from './RadioTile';
48
49
  export * from './SearchBar';
49
50
  export * from './SegmentedControl';
50
51
  export * from './Select';
package/dist/homepage.js CHANGED
@@ -1,58 +1,96 @@
1
- import { default as default2 } from "./modules/homepage/components/Communities/Communities.js";
2
- import { default as default3 } from "./modules/homepage/components/Communities/CommunityItem.js";
3
- import { default as default4 } from "./modules/homepage/components/Communities/CommunitiesSkeleton.js";
4
- import { default as default5 } from "./modules/homepage/components/Header/Header.js";
5
- import { default as default6 } from "./modules/homepage/components/HomeCard/HomeCard.js";
6
- import { default as default7 } from "./modules/homepage/components/LastInfos/LastInfos.js";
7
- import { default as default8 } from "./modules/homepage/components/MessageFlashList/MessageFlash.js";
8
- import { default as default9 } from "./modules/homepage/components/MessageFlashList/MessageFlashList.js";
9
- import { default as default10 } from "./modules/homepage/components/Notifications/NotificationItem.js";
10
- import { default as default11 } from "./modules/homepage/components/Notifications/NotificationList.js";
1
+ import { default as default2 } from "./modules/homepage/components/BriefMe/BriefMe.js";
2
+ import { default as default3 } from "./modules/homepage/components/Cantine/Cantine.js";
3
+ import { default as default4 } from "./modules/homepage/components/Cantine/CantineModal.js";
4
+ import { default as default5 } from "./modules/homepage/components/Communities/Communities.js";
5
+ import { default as default6 } from "./modules/homepage/components/Communities/CommunityItem.js";
6
+ import { default as default7 } from "./modules/homepage/components/Communities/CommunitiesSkeleton.js";
7
+ import { default as default8 } from "./modules/homepage/components/GenerationHdf/GenerationHdf.js";
8
+ import { default as default9 } from "./modules/homepage/components/Header/Header.js";
9
+ import { default as default10 } from "./modules/homepage/components/HomeCard/HomeCard.js";
10
+ import { default as default11 } from "./modules/homepage/components/LastInfos/LastInfos.js";
11
+ import { default as default12 } from "./modules/homepage/components/MessageFlashList/MessageFlash.js";
12
+ import { default as default13 } from "./modules/homepage/components/MessageFlashList/MessageFlashList.js";
13
+ import { default as default14 } from "./modules/homepage/components/Notifications/NotificationItem.js";
14
+ import { default as default15 } from "./modules/homepage/components/Notifications/NotificationList.js";
11
15
  import { NotificationListContainer } from "./modules/homepage/components/Notifications/NotificationListContainer.js";
12
- import { default as default12 } from "./modules/homepage/components/SchoolSpace/SchoolSpace.js";
13
- import { default as default13 } from "./modules/homepage/components/UserSpace/UserSpace.js";
16
+ import { default as default16 } from "./modules/homepage/components/Qwant/Qwant.js";
17
+ import { default as default17 } from "./modules/homepage/components/SchoolSpace/SchoolSpace.js";
18
+ import { default as default18 } from "./modules/homepage/components/Universalis/Universalis.js";
19
+ import { default as default19 } from "./modules/homepage/components/UserSpace/UserSpace.js";
20
+ import { Agenda } from "./modules/homepage/components/Agenda/Agenda.js";
21
+ import { AgendaContainer } from "./modules/homepage/components/Agenda/AgendaContainer.js";
22
+ import { AgendaEventCard } from "./modules/homepage/components/Agenda/AgendaEventCard.js";
23
+ import { BriefMeContainer } from "./modules/homepage/components/BriefMe/BriefMeContainer.js";
14
24
  import { COMMUNITIES_PREVIEW_SIZE, useCommunities } from "./modules/homepage/components/Communities/useCommunities.js";
25
+ import { CantineContainer } from "./modules/homepage/components/Cantine/CantineContainer.js";
26
+ import { CantineModalContainer } from "./modules/homepage/components/Cantine/CantineModalContainer.js";
15
27
  import { CommunitiesContainer } from "./modules/homepage/components/Communities/CommunitiesContainer.js";
16
28
  import { Favorites } from "./modules/homepage/components/Favorites/Favorites.js";
17
29
  import { FavoritesContainer } from "./modules/homepage/components/Favorites/FavoritesContainer.js";
30
+ import { GenerationHdfContainer } from "./modules/homepage/components/GenerationHdf/GenerationHdfContainer.js";
18
31
  import { LastInfosContainer } from "./modules/homepage/components/LastInfos/LastInfosContainer.js";
19
32
  import { LastInfosList } from "./modules/homepage/components/LastInfos/LastInfosList.js";
20
33
  import { LinkForm } from "./modules/homepage/components/UsefulLinks/LinkForm.js";
21
34
  import { MAX_USEFUL_LINKS, useUsefulLinksContainer } from "./modules/homepage/components/UsefulLinks/hooks/useUsefulLinksContainer.js";
22
35
  import { MessageFlashListContainer } from "./modules/homepage/components/MessageFlashList/MessageFlashListContainer.js";
36
+ import { QwantContainer } from "./modules/homepage/components/Qwant/QwantContainer.js";
23
37
  import { SchoolSpaceContainer } from "./modules/homepage/components/SchoolSpace/SchoolSpaceContainer.js";
38
+ import { UniversalisContainer } from "./modules/homepage/components/Universalis/UniversalisContainer.js";
24
39
  import { UsefulLinks } from "./modules/homepage/components/UsefulLinks/UsefulLinks.js";
25
40
  import { UsefulLinksContainer } from "./modules/homepage/components/UsefulLinks/UsefulLinksContainer.js";
26
41
  import { UsefulLinksModal } from "./modules/homepage/components/UsefulLinks/UsefulLinksModal.js";
27
42
  import { UserSpaceContainer } from "./modules/homepage/components/UserSpace/UserSpaceContainer.js";
43
+ import { WidgetToggle } from "./modules/homepage/components/WidgetsPersonalizationPanel/WidgetToggle.js";
44
+ import { WidgetsPersonalizationPanel } from "./modules/homepage/components/WidgetsPersonalizationPanel/WidgetsPersonalizationPanel.js";
45
+ import { briefMeQueryOptions, buildGarLink, useBriefMe } from "./modules/homepage/components/BriefMe/useBriefMe.js";
28
46
  export {
47
+ Agenda,
48
+ AgendaContainer,
49
+ AgendaEventCard,
50
+ default2 as BriefMe,
51
+ BriefMeContainer,
29
52
  COMMUNITIES_PREVIEW_SIZE,
30
- default2 as Communities,
53
+ default3 as Cantine,
54
+ CantineContainer,
55
+ default4 as CantineModal,
56
+ CantineModalContainer,
57
+ default5 as Communities,
31
58
  CommunitiesContainer,
32
- default3 as CommunitiesItem,
33
- default4 as CommunitiesSkeleton,
59
+ default6 as CommunitiesItem,
60
+ default7 as CommunitiesSkeleton,
34
61
  Favorites,
35
62
  FavoritesContainer,
36
- default5 as Header,
37
- default6 as HomeCard,
38
- default7 as LastInfos,
63
+ default8 as GenerationHdf,
64
+ GenerationHdfContainer,
65
+ default9 as Header,
66
+ default10 as HomeCard,
67
+ default11 as LastInfos,
39
68
  LastInfosContainer,
40
69
  LastInfosList,
41
70
  LinkForm,
42
71
  MAX_USEFUL_LINKS,
43
- default8 as MessageFlash,
44
- default9 as MessageFlashList,
72
+ default12 as MessageFlash,
73
+ default13 as MessageFlashList,
45
74
  MessageFlashListContainer,
46
- default10 as NotificationItem,
47
- default11 as NotificationList,
75
+ default14 as NotificationItem,
76
+ default15 as NotificationList,
48
77
  NotificationListContainer,
49
- default12 as SchoolSpace,
78
+ default16 as Qwant,
79
+ QwantContainer,
80
+ default17 as SchoolSpace,
50
81
  SchoolSpaceContainer,
82
+ default18 as Universalis,
83
+ UniversalisContainer,
51
84
  UsefulLinks,
52
85
  UsefulLinksContainer,
53
86
  UsefulLinksModal,
54
- default13 as UserSpace,
87
+ default19 as UserSpace,
55
88
  UserSpaceContainer,
89
+ WidgetToggle,
90
+ WidgetsPersonalizationPanel,
91
+ briefMeQueryOptions,
92
+ buildGarLink,
93
+ useBriefMe,
56
94
  useCommunities,
57
95
  useUsefulLinksContainer
58
96
  };
@@ -3,6 +3,7 @@ export * from './useBookmark';
3
3
  export * from './useBreakpoint';
4
4
  export * from './useBrowserInfo';
5
5
  export * from './useCantoo';
6
+ export * from './useCarbonioUnread';
6
7
  export * from './useCheckable';
7
8
  export * from './useClickOutside';
8
9
  export * from './useConversation';
@@ -23,6 +24,7 @@ export * from './useIsAdmlcOrAdmc';
23
24
  export * from './useKeyPress';
24
25
  export * from './useLibraryUrl';
25
26
  export * from './useMediaLibrary';
27
+ export * from './useNextcloudSearch';
26
28
  export * from './usePublicConf';
27
29
  export * from './useScreeb';
28
30
  export * from './useScrollToTop';
@@ -1,4 +1,4 @@
1
- export type Background = 'default' | 'pink-200' | 'yellow-200' | 'orange-200' | 'blue-200' | 'green-200';
1
+ export type Background = 'default' | 'pink-200' | 'yellow-200' | 'orange-200' | 'blue-200' | 'green-200' | 'crna';
2
2
  declare const _default: () => {
3
3
  betaEnabled: boolean | undefined;
4
4
  background: Background;
@@ -0,0 +1 @@
1
+ export { default as useCarbonioUnread } from './useCarbonioUnread';
@@ -0,0 +1,5 @@
1
+ declare const useCarbonioUnread: () => {
2
+ readonly hasCarbonioWorkflow: boolean | Record<string, boolean>;
3
+ readonly unreadCount: number;
4
+ };
5
+ export default useCarbonioUnread;
@@ -0,0 +1,24 @@
1
+ import { odeServices } from "@edifice.io/client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import useHasWorkflow from "../useHasWorkflow/useHasWorkflow.js";
4
+ const CARBONIO_PREAUTH_WORKFLOW = "org.entcore.auth.controllers.CarbonioPreauthController|preauth", useCarbonioUnread = () => {
5
+ const hasCarbonioWorkflow = useHasWorkflow(CARBONIO_PREAUTH_WORKFLOW) || !1, {
6
+ data
7
+ } = useQuery({
8
+ queryKey: ["carbonio", "unread", "count"],
9
+ queryFn: () => odeServices.http().get("/auth/carbonio/unread", {
10
+ disableNotifications: !0
11
+ }),
12
+ enabled: hasCarbonioWorkflow,
13
+ staleTime: 5 * 60 * 1e3,
14
+ // Each call queries the Carbonio server: a failure means no badge, not another try.
15
+ retry: !1
16
+ });
17
+ return {
18
+ hasCarbonioWorkflow,
19
+ unreadCount: (data == null ? void 0 : data.count) ?? 0
20
+ };
21
+ };
22
+ export {
23
+ useCarbonioUnread as default
24
+ };
@@ -0,0 +1 @@
1
+ export { default as useNextcloudSearch } from './useNextcloudSearch';
@@ -0,0 +1,14 @@
1
+ import { ID, NextcloudDocument } from '@edifice.io/client';
2
+ import { TreeItem } from '../../components/Tree/types';
3
+ export type NextcloudFolderNode = TreeItem & {
4
+ files?: NextcloudDocument[];
5
+ };
6
+ export default function useNextcloudSearch(rootId: string, rootName: string, userId?: string): {
7
+ root: NextcloudFolderNode;
8
+ needsAuth: boolean;
9
+ isCheckingAuth: boolean;
10
+ isAuthError: boolean;
11
+ refetchAuthStatus: () => void;
12
+ loadContent: (folderId?: ID) => void;
13
+ loadError: unknown;
14
+ };
@@ -0,0 +1,64 @@
1
+ import { useState, useCallback } from "react";
2
+ import { odeServices } from "@edifice.io/client";
3
+ import { useQueryClient, useQuery } from "@tanstack/react-query";
4
+ import { findNodeById, modifyNode } from "../../components/Tree/utilities/tree.js";
5
+ function useNextcloudSearch(rootId, rootName, userId) {
6
+ var _a;
7
+ const [root, setRoot] = useState({
8
+ id: rootId,
9
+ name: rootName,
10
+ section: !0
11
+ }), updateFolder = useCallback((folderId, subfolders, files) => {
12
+ setRoot((prev) => {
13
+ const node = findNodeById(prev, folderId);
14
+ if (!node) return prev;
15
+ const children = subfolders.map((f) => {
16
+ var _a2;
17
+ const existing = (_a2 = node.children) == null ? void 0 : _a2.find((c) => c.id === f.path);
18
+ return existing ? {
19
+ ...existing,
20
+ name: f.name
21
+ } : {
22
+ id: f.path,
23
+ name: f.name
24
+ };
25
+ });
26
+ return modifyNode(prev, (n) => n.id === node.id ? {
27
+ ...n,
28
+ children,
29
+ files
30
+ } : n);
31
+ });
32
+ }, []), queryClient = useQueryClient(), oauth2StatusQuery = useQuery({
33
+ queryKey: ["nextcloud", "oauth2-status", userId],
34
+ queryFn: () => odeServices.nextcloud().getOauth2Status(userId),
35
+ enabled: !!userId
36
+ }), needsAuth = !((_a = oauth2StatusQuery.data) != null && _a.connected), [loadError, setLoadError] = useState(null), loadContent = useCallback(async (folderId) => {
37
+ if (!userId) return;
38
+ const path = folderId === rootId ? void 0 : folderId;
39
+ try {
40
+ const payload = await queryClient.fetchQuery({
41
+ queryKey: ["nextcloud", "documents", userId, path ?? "/"],
42
+ queryFn: () => odeServices.nextcloud().listDocuments(userId, path),
43
+ staleTime: 6e4
44
+ }), subfolders = [], files = [], currentPath = path ?? "/";
45
+ payload.filter((doc) => doc.path !== currentPath).forEach((doc) => {
46
+ doc.isFolder ? subfolders.push(doc) : files.push(doc);
47
+ }), setLoadError(null), updateFolder(folderId, subfolders, files);
48
+ } catch (error) {
49
+ setLoadError(error);
50
+ }
51
+ }, [rootId, userId, queryClient, updateFolder]);
52
+ return {
53
+ root,
54
+ needsAuth,
55
+ isCheckingAuth: oauth2StatusQuery.isLoading,
56
+ isAuthError: oauth2StatusQuery.isError,
57
+ refetchAuthStatus: oauth2StatusQuery.refetch,
58
+ loadContent,
59
+ loadError
60
+ };
61
+ }
62
+ export {
63
+ useNextcloudSearch as default
64
+ };
@@ -6,9 +6,5 @@ export interface UseZendeskGuideAPI {
6
6
  open: () => void;
7
7
  close: () => void;
8
8
  }
9
- /**
10
- * Add Zendesk Guide
11
- *
12
- * @param headerColor Overrides the widget panel's theme color.
13
- */
14
- export default function useZendeskGuide(headerColor?: string): UseZendeskGuideAPI;
9
+ /** Add Zendesk Guide */
10
+ export default function useZendeskGuide(): UseZendeskGuideAPI;
@@ -4,22 +4,24 @@ import { useEdificeClient } from "../../providers/EdificeClientProvider/EdificeC
4
4
  import { useEdificeTheme } from "../../providers/EdificeThemeProvider/EdificeThemeProvider.hook.js";
5
5
  import useUser from "../useUser/useUser.js";
6
6
  import useIsAdml from "../useIsAdml/useIsAdml.js";
7
+ import useUiOverride from "../useUiOverride/useUiOverride.js";
7
8
  import useHasWorkflow from "../useHasWorkflow/useHasWorkflow.js";
8
- function useZendeskGuide(headerColor) {
9
+ function useZendeskGuide() {
10
+ var _a;
9
11
  const {
10
12
  currentLanguage
11
13
  } = useEdificeClient(), {
12
14
  userDescription
13
15
  } = useUser(), {
14
16
  isAdml
15
- } = useIsAdml(), {
17
+ } = useIsAdml(), isEdificeInProductHelp = ((_a = useUiOverride("layout.helpzone")) == null ? void 0 : _a.variant) === "edifice-in-product", {
16
18
  theme
17
19
  } = useEdificeTheme(), isMobileView = window.innerWidth <= 768, hasSupportWorkflow = useHasWorkflow("net.atos.entng.support.controllers.DisplayController|view"), [locationPathname, setLocationPathname] = useState(""), [dataModule, setDataModule] = useState(void 0), [isReady, setIsReady] = useState(!1), [isOpen, setIsOpen] = useState(!1), open = () => {
18
- var _a;
19
- (_a = window.zE) == null || _a.call(window, "webWidget", "open");
20
+ var _a2;
21
+ (_a2 = window.zE) == null || _a2.call(window, "webWidget", "open");
20
22
  }, close = () => {
21
- var _a;
22
- (_a = window.zE) == null || _a.call(window, "webWidget", "close");
23
+ var _a2;
24
+ (_a2 = window.zE) == null || _a2.call(window, "webWidget", "close");
23
25
  }, setZendeskGuideLabels = () => {
24
26
  const modulePathnameSplit = locationPathname.split("/");
25
27
  let moduleLabel = "", labels = "";
@@ -83,8 +85,9 @@ function useZendeskGuide(headerColor) {
83
85
  }), Object.keys(zendeskGuideConfig.module).length > 0 && setDataModule(zendeskGuideConfig.module), window.zE("webWidget", "show"), window.zE("webWidget", "updateSettings", {
84
86
  webWidget: {
85
87
  color: {
86
- theme: zendeskGuideConfig.color || "#ffc400",
87
- header: headerColor
88
+ //TODO #IMPULS-6352 to update with "edifice in product" generalization #IMPULS-6352
89
+ // theme: : zendeskGuideConfig.color || '#3030D1',
90
+ theme: isEdificeInProductHelp ? "#3030D1" : zendeskGuideConfig.color || "#3030D1"
88
91
  },
89
92
  zIndex: 3,
90
93
  launcher: {