@edifice.io/react 2.6.2-develop-integration-crna.20260825143220 → 2.6.2-develop-b2school.20260826092722

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 (46) hide show
  1. package/dist/components/Layout/Layout.js +3 -5
  2. package/dist/icons-apps.js +100 -112
  3. package/dist/modules/homepage/components/Favorites/Favorites.js +3 -6
  4. package/dist/modules/homepage/components/Header/Header.js +13 -24
  5. package/dist/modules/homepage/components/Notifications/NotificationItem.js +4 -5
  6. package/dist/modules/homepage/components/Notifications/NotificationList.d.ts +1 -7
  7. package/dist/modules/homepage/components/Notifications/NotificationList.js +1 -8
  8. package/dist/modules/homepage/components/Notifications/NotificationListContainer.js +1 -4
  9. package/dist/modules/homepage/components/Notifications/components/CommonNotificationItem.d.ts +1 -2
  10. package/dist/modules/homepage/components/Notifications/components/CommonNotificationItem.js +10 -14
  11. package/dist/modules/homepage/components/Notifications/components/SystemNotificationItem.d.ts +1 -3
  12. package/dist/modules/homepage/components/Notifications/components/SystemNotificationItem.js +2 -3
  13. package/dist/modules/homepage/components/Notifications/components/UserNotificationItem.d.ts +1 -3
  14. package/dist/modules/homepage/components/Notifications/components/UserNotificationItem.js +2 -3
  15. package/dist/modules/homepage/components/Notifications/components/notificationAdapter.d.ts +0 -1
  16. package/dist/modules/homepage/components/Notifications/components/notificationAdapter.js +2 -7
  17. package/dist/modules/homepage/components/Notifications/hooks/useNotificationList.d.ts +1 -11
  18. package/dist/modules/homepage/components/Notifications/hooks/useNotificationList.js +2 -34
  19. package/dist/modules/homepage/components/Notifications/services/api/index.d.ts +0 -2
  20. package/dist/modules/homepage/components/Notifications/services/api/notificationService.d.ts +0 -8
  21. package/dist/modules/homepage/components/Notifications/services/api/notificationService.js +0 -12
  22. package/dist/modules/homepage/components/Notifications/services/queries/notification.d.ts +1 -13
  23. package/dist/modules/homepage/components/Notifications/services/queries/notification.js +4 -41
  24. package/dist/modules/homepage/components/UserSpace/hooks/useProfileLinks.js +18 -8
  25. package/dist/modules/icons/components/apps/index.d.ts +0 -6
  26. package/package.json +6 -6
  27. package/dist/modules/homepage/components/Notifications/components/NotificationFilterMenu.d.ts +0 -16
  28. package/dist/modules/homepage/components/Notifications/components/NotificationFilterMenu.js +0 -29
  29. package/dist/modules/homepage/components/Notifications/components/NotificationFilterModal.d.ts +0 -18
  30. package/dist/modules/homepage/components/Notifications/components/NotificationFilterModal.js +0 -67
  31. package/dist/modules/homepage/components/Notifications/components/NotificationOptionsMenu.d.ts +0 -12
  32. package/dist/modules/homepage/components/Notifications/components/NotificationOptionsMenu.js +0 -42
  33. package/dist/modules/homepage/components/Notifications/components/ReportNotificationModal.d.ts +0 -13
  34. package/dist/modules/homepage/components/Notifications/components/ReportNotificationModal.js +0 -31
  35. package/dist/modules/icons/components/apps/IconNextcloudDeck.d.ts +0 -7
  36. package/dist/modules/icons/components/apps/IconNextcloudDeck.js +0 -12
  37. package/dist/modules/icons/components/apps/IconNextcloudFiles.d.ts +0 -7
  38. package/dist/modules/icons/components/apps/IconNextcloudFiles.js +0 -12
  39. package/dist/modules/icons/components/apps/IconNextcloudForms.d.ts +0 -7
  40. package/dist/modules/icons/components/apps/IconNextcloudForms.js +0 -12
  41. package/dist/modules/icons/components/apps/IconNextcloudNotes.d.ts +0 -7
  42. package/dist/modules/icons/components/apps/IconNextcloudNotes.js +0 -12
  43. package/dist/modules/icons/components/apps/IconNextcloudTalk.d.ts +0 -7
  44. package/dist/modules/icons/components/apps/IconNextcloudTalk.js +0 -12
  45. package/dist/modules/icons/components/apps/IconPeertube.d.ts +0 -7
  46. package/dist/modules/icons/components/apps/IconPeertube.js +0 -21
@@ -1,4 +1,4 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { Suspense, lazy } from "react";
3
3
  import clsx from "clsx";
4
4
  import { Toaster } from "react-hot-toast";
@@ -22,7 +22,7 @@ const HeaderV2 = /* @__PURE__ */ lazy(() => import("../../modules/homepage/compo
22
22
  }) => {
23
23
  const {
24
24
  theme
25
- } = useEdificeTheme(), override = useUiOverride("layout.header"), isHeaderV2 = (override == null ? void 0 : override.variant) === "v2", backgroundOverride = useUiOverride("layout.background"), hasBackgroundImage = (backgroundOverride == null ? void 0 : backgroundOverride.variant) === "image", {
25
+ } = useEdificeTheme(), override = useUiOverride("layout.header"), isHeaderV2 = (override == null ? void 0 : override.variant) === "v2", {
26
26
  toggleOverlay
27
27
  } = useOverlay(), {
28
28
  t
@@ -40,9 +40,7 @@ const HeaderV2 = /* @__PURE__ */ lazy(() => import("../../modules/homepage/compo
40
40
  }, className), renderHeader = headless ? null : isHeaderV2 ? /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(HeaderV2, { src: theme == null ? void 0 : theme.basePath, dataProduct: override == null ? void 0 : override.theme, onNotificationsClick: toggleOverlay }) }) : /* @__PURE__ */ jsx(Header, { is1d: theme == null ? void 0 : theme.is1d, src: theme == null ? void 0 : theme.basePath }), renderNotificationsOverlay = !headless && isHeaderV2 && /* @__PURE__ */ jsx(HeaderNotificationsOverlay, {}), renderCookies = showCookiesConsent && /* @__PURE__ */ jsx(Alert, { type: "info", className: "m-12 rgpd", isConfirm: !0, position: "bottom-right", button: /* @__PURE__ */ jsx(Button, { color: "tertiary", variant: "ghost", onClick: handleConsultCookies, children: t("rgpd.cookies.banner.button.consult") }), onClose: handleCloseCookiesConsent, children: t("rgpd.cookies.banner.text1") }), renderToaster = /* @__PURE__ */ jsx(Toaster, { containerClassName: "toaster-container", toastOptions: {
41
41
  position: "top-right"
42
42
  } });
43
- return /* @__PURE__ */ jsxs("div", { className: clsx("layout", {
44
- "layout-has-background-image": hasBackgroundImage
45
- }), "data-product": hasBackgroundImage ? backgroundOverride == null ? void 0 : backgroundOverride.theme : void 0, children: [
43
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
46
44
  renderHeader,
47
45
  renderNotificationsOverlay,
48
46
  /* @__PURE__ */ jsx("main", { className: classes, ...restProps, children }),
@@ -75,62 +75,56 @@ import { default as default75 } from "./modules/icons/components/apps/IconMuseef
75
75
  import { default as default76 } from "./modules/icons/components/apps/IconMyNetwork.js";
76
76
  import { default as default77 } from "./modules/icons/components/apps/IconNabook.js";
77
77
  import { default as default78 } from "./modules/icons/components/apps/IconNetvibes.js";
78
- import { default as default79 } from "./modules/icons/components/apps/IconNextcloudDeck.js";
79
- import { default as default80 } from "./modules/icons/components/apps/IconNextcloudFiles.js";
80
- import { default as default81 } from "./modules/icons/components/apps/IconNextcloudForms.js";
81
- import { default as default82 } from "./modules/icons/components/apps/IconNextcloudNotes.js";
82
- import { default as default83 } from "./modules/icons/components/apps/IconNextcloudTalk.js";
83
- import { default as default84 } from "./modules/icons/components/apps/IconNote.js";
84
- import { default as default85 } from "./modules/icons/components/apps/IconNotebook.js";
85
- import { default as default86 } from "./modules/icons/components/apps/IconNotes.js";
86
- import { default as default87 } from "./modules/icons/components/apps/IconOnisep.js";
87
- import { default as default88 } from "./modules/icons/components/apps/IconOnisep2.js";
88
- import { default as default89 } from "./modules/icons/components/apps/IconPad.js";
89
- import { default as default90 } from "./modules/icons/components/apps/IconPages.js";
90
- import { default as default91 } from "./modules/icons/components/apps/IconParametrage.js";
91
- import { default as default92 } from "./modules/icons/components/apps/IconParametrages.js";
92
- import { default as default93 } from "./modules/icons/components/apps/IconParaschool.js";
93
- import { default as default94 } from "./modules/icons/components/apps/IconParcours.js";
94
- import { default as default95 } from "./modules/icons/components/apps/IconPearltrees.js";
95
- import { default as default96 } from "./modules/icons/components/apps/IconPeertube.js";
96
- import { default as default97 } from "./modules/icons/components/apps/IconPicardieCursus.js";
97
- import { default as default98 } from "./modules/icons/components/apps/IconPlaceholder.js";
98
- import { default as default99 } from "./modules/icons/components/apps/IconPoll.js";
99
- import { default as default100 } from "./modules/icons/components/apps/IconPresences.js";
100
- import { default as default101 } from "./modules/icons/components/apps/IconProeps.js";
101
- import { default as default102 } from "./modules/icons/components/apps/IconPronote.js";
102
- import { default as default103 } from "./modules/icons/components/apps/IconPublic.js";
103
- import { default as default104 } from "./modules/icons/components/apps/IconQwantJunior.js";
104
- import { default as default105 } from "./modules/icons/components/apps/IconQwant.js";
105
- import { default as default106 } from "./modules/icons/components/apps/IconRack.js";
106
- import { default as default107 } from "./modules/icons/components/apps/IconRbs.js";
107
- import { default as default108 } from "./modules/icons/components/apps/IconResidenceArtiste.js";
108
- import { default as default109 } from "./modules/icons/components/apps/IconRessourcesdepartementale91.js";
109
- import { default as default110 } from "./modules/icons/components/apps/IconSacoche.js";
110
- import { default as default111 } from "./modules/icons/components/apps/IconSchoolbook.js";
111
- import { default as default112 } from "./modules/icons/components/apps/IconScolinfo.js";
112
- import { default as default113 } from "./modules/icons/components/apps/IconScrapbook.js";
113
- import { default as default114 } from "./modules/icons/components/apps/IconSearchengine.js";
114
- import { default as default115 } from "./modules/icons/components/apps/IconSettingsClass.js";
115
- import { default as default116 } from "./modules/icons/components/apps/IconSharebigfiles.js";
116
- import { default as default117 } from "./modules/icons/components/apps/IconStatistics.js";
117
- import { default as default118 } from "./modules/icons/components/apps/IconStats.js";
118
- import { default as default119 } from "./modules/icons/components/apps/IconSuitcase.js";
119
- import { default as default120 } from "./modules/icons/components/apps/IconSupport.js";
120
- import { default as default121 } from "./modules/icons/components/apps/IconTimeline.js";
121
- import { default as default122 } from "./modules/icons/components/apps/IconTimelinegenerator.js";
122
- import { default as default123 } from "./modules/icons/components/apps/IconTurboself.js";
123
- import { default as default124 } from "./modules/icons/components/apps/IconUniversalis.js";
124
- import { default as default125 } from "./modules/icons/components/apps/IconUnstagepourtous.js";
125
- import { default as default126 } from "./modules/icons/components/apps/IconUserbook.js";
126
- import { default as default127 } from "./modules/icons/components/apps/IconVideo.js";
127
- import { default as default128 } from "./modules/icons/components/apps/IconVieScolaire.js";
128
- import { default as default129 } from "./modules/icons/components/apps/IconVisioconf.js";
129
- import { default as default130 } from "./modules/icons/components/apps/IconVotil.js";
130
- import { default as default131 } from "./modules/icons/components/apps/IconWebclasseur.js";
131
- import { default as default132 } from "./modules/icons/components/apps/IconWebsite.js";
132
- import { default as default133 } from "./modules/icons/components/apps/IconWiki.js";
133
- import { default as default134 } from "./modules/icons/components/apps/IconWorkspace.js";
78
+ import { default as default79 } from "./modules/icons/components/apps/IconNote.js";
79
+ import { default as default80 } from "./modules/icons/components/apps/IconNotebook.js";
80
+ import { default as default81 } from "./modules/icons/components/apps/IconNotes.js";
81
+ import { default as default82 } from "./modules/icons/components/apps/IconOnisep.js";
82
+ import { default as default83 } from "./modules/icons/components/apps/IconOnisep2.js";
83
+ import { default as default84 } from "./modules/icons/components/apps/IconPad.js";
84
+ import { default as default85 } from "./modules/icons/components/apps/IconPages.js";
85
+ import { default as default86 } from "./modules/icons/components/apps/IconParametrage.js";
86
+ import { default as default87 } from "./modules/icons/components/apps/IconParametrages.js";
87
+ import { default as default88 } from "./modules/icons/components/apps/IconParaschool.js";
88
+ import { default as default89 } from "./modules/icons/components/apps/IconParcours.js";
89
+ import { default as default90 } from "./modules/icons/components/apps/IconPearltrees.js";
90
+ import { default as default91 } from "./modules/icons/components/apps/IconPicardieCursus.js";
91
+ import { default as default92 } from "./modules/icons/components/apps/IconPlaceholder.js";
92
+ import { default as default93 } from "./modules/icons/components/apps/IconPoll.js";
93
+ import { default as default94 } from "./modules/icons/components/apps/IconPresences.js";
94
+ import { default as default95 } from "./modules/icons/components/apps/IconProeps.js";
95
+ import { default as default96 } from "./modules/icons/components/apps/IconPronote.js";
96
+ import { default as default97 } from "./modules/icons/components/apps/IconPublic.js";
97
+ import { default as default98 } from "./modules/icons/components/apps/IconQwantJunior.js";
98
+ import { default as default99 } from "./modules/icons/components/apps/IconQwant.js";
99
+ import { default as default100 } from "./modules/icons/components/apps/IconRack.js";
100
+ import { default as default101 } from "./modules/icons/components/apps/IconRbs.js";
101
+ import { default as default102 } from "./modules/icons/components/apps/IconResidenceArtiste.js";
102
+ import { default as default103 } from "./modules/icons/components/apps/IconRessourcesdepartementale91.js";
103
+ import { default as default104 } from "./modules/icons/components/apps/IconSacoche.js";
104
+ import { default as default105 } from "./modules/icons/components/apps/IconSchoolbook.js";
105
+ import { default as default106 } from "./modules/icons/components/apps/IconScolinfo.js";
106
+ import { default as default107 } from "./modules/icons/components/apps/IconScrapbook.js";
107
+ import { default as default108 } from "./modules/icons/components/apps/IconSearchengine.js";
108
+ import { default as default109 } from "./modules/icons/components/apps/IconSettingsClass.js";
109
+ import { default as default110 } from "./modules/icons/components/apps/IconSharebigfiles.js";
110
+ import { default as default111 } from "./modules/icons/components/apps/IconStatistics.js";
111
+ import { default as default112 } from "./modules/icons/components/apps/IconStats.js";
112
+ import { default as default113 } from "./modules/icons/components/apps/IconSuitcase.js";
113
+ import { default as default114 } from "./modules/icons/components/apps/IconSupport.js";
114
+ import { default as default115 } from "./modules/icons/components/apps/IconTimeline.js";
115
+ import { default as default116 } from "./modules/icons/components/apps/IconTimelinegenerator.js";
116
+ import { default as default117 } from "./modules/icons/components/apps/IconTurboself.js";
117
+ import { default as default118 } from "./modules/icons/components/apps/IconUniversalis.js";
118
+ import { default as default119 } from "./modules/icons/components/apps/IconUnstagepourtous.js";
119
+ import { default as default120 } from "./modules/icons/components/apps/IconUserbook.js";
120
+ import { default as default121 } from "./modules/icons/components/apps/IconVideo.js";
121
+ import { default as default122 } from "./modules/icons/components/apps/IconVieScolaire.js";
122
+ import { default as default123 } from "./modules/icons/components/apps/IconVisioconf.js";
123
+ import { default as default124 } from "./modules/icons/components/apps/IconVotil.js";
124
+ import { default as default125 } from "./modules/icons/components/apps/IconWebclasseur.js";
125
+ import { default as default126 } from "./modules/icons/components/apps/IconWebsite.js";
126
+ import { default as default127 } from "./modules/icons/components/apps/IconWiki.js";
127
+ import { default as default128 } from "./modules/icons/components/apps/IconWorkspace.js";
134
128
  export {
135
129
  default2 as IconAccount,
136
130
  default3 as IconActualites,
@@ -209,60 +203,54 @@ export {
209
203
  default76 as IconMyNetwork,
210
204
  default77 as IconNabook,
211
205
  default78 as IconNetvibes,
212
- default79 as IconNextcloudDeck,
213
- default80 as IconNextcloudFiles,
214
- default81 as IconNextcloudForms,
215
- default82 as IconNextcloudNotes,
216
- default83 as IconNextcloudTalk,
217
- default84 as IconNote,
218
- default85 as IconNotebook,
219
- default86 as IconNotes,
220
- default87 as IconOnisep,
221
- default88 as IconOnisep2,
222
- default89 as IconPad,
223
- default90 as IconPages,
224
- default91 as IconParametrage,
225
- default92 as IconParametrages,
226
- default93 as IconParaschool,
227
- default94 as IconParcours,
228
- default95 as IconPearltrees,
229
- default96 as IconPeertube,
230
- default97 as IconPicardieCursus,
231
- default98 as IconPlaceholder,
232
- default99 as IconPoll,
233
- default100 as IconPresences,
234
- default101 as IconProeps,
235
- default102 as IconPronote,
236
- default103 as IconPublic,
237
- default105 as IconQwant,
238
- default104 as IconQwantJunior,
239
- default106 as IconRack,
240
- default107 as IconRbs,
241
- default108 as IconResidenceArtiste,
242
- default109 as IconRessourcesdepartementale91,
243
- default110 as IconSacoche,
244
- default111 as IconSchoolbook,
245
- default112 as IconScolinfo,
246
- default113 as IconScrapbook,
247
- default114 as IconSearchengine,
248
- default115 as IconSettingsClass,
249
- default116 as IconSharebigfiles,
250
- default117 as IconStatistics,
251
- default118 as IconStats,
252
- default119 as IconSuitcase,
253
- default120 as IconSupport,
254
- default121 as IconTimeline,
255
- default122 as IconTimelinegenerator,
256
- default123 as IconTurboself,
257
- default124 as IconUniversalis,
258
- default125 as IconUnstagepourtous,
259
- default126 as IconUserbook,
260
- default127 as IconVideo,
261
- default128 as IconVieScolaire,
262
- default129 as IconVisioconf,
263
- default130 as IconVotil,
264
- default131 as IconWebclasseur,
265
- default132 as IconWebsite,
266
- default133 as IconWiki,
267
- default134 as IconWorkspace
206
+ default79 as IconNote,
207
+ default80 as IconNotebook,
208
+ default81 as IconNotes,
209
+ default82 as IconOnisep,
210
+ default83 as IconOnisep2,
211
+ default84 as IconPad,
212
+ default85 as IconPages,
213
+ default86 as IconParametrage,
214
+ default87 as IconParametrages,
215
+ default88 as IconParaschool,
216
+ default89 as IconParcours,
217
+ default90 as IconPearltrees,
218
+ default91 as IconPicardieCursus,
219
+ default92 as IconPlaceholder,
220
+ default93 as IconPoll,
221
+ default94 as IconPresences,
222
+ default95 as IconProeps,
223
+ default96 as IconPronote,
224
+ default97 as IconPublic,
225
+ default99 as IconQwant,
226
+ default98 as IconQwantJunior,
227
+ default100 as IconRack,
228
+ default101 as IconRbs,
229
+ default102 as IconResidenceArtiste,
230
+ default103 as IconRessourcesdepartementale91,
231
+ default104 as IconSacoche,
232
+ default105 as IconSchoolbook,
233
+ default106 as IconScolinfo,
234
+ default107 as IconScrapbook,
235
+ default108 as IconSearchengine,
236
+ default109 as IconSettingsClass,
237
+ default110 as IconSharebigfiles,
238
+ default111 as IconStatistics,
239
+ default112 as IconStats,
240
+ default113 as IconSuitcase,
241
+ default114 as IconSupport,
242
+ default115 as IconTimeline,
243
+ default116 as IconTimelinegenerator,
244
+ default117 as IconTurboself,
245
+ default118 as IconUniversalis,
246
+ default119 as IconUnstagepourtous,
247
+ default120 as IconUserbook,
248
+ default121 as IconVideo,
249
+ default122 as IconVieScolaire,
250
+ default123 as IconVisioconf,
251
+ default124 as IconVotil,
252
+ default125 as IconWebclasseur,
253
+ default126 as IconWebsite,
254
+ default127 as IconWiki,
255
+ default128 as IconWorkspace
268
256
  };
@@ -1,5 +1,4 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
- import { useMemo } from "react";
3
2
  import { useTranslation } from "react-i18next";
4
3
  import illuEmptyFavorite from "@edifice.io/bootstrap/dist/images/homepage/illu-empty-favorite.svg";
5
4
  import SvgIconArrowRight from "../../../icons/components/IconArrowRight.js";
@@ -12,15 +11,13 @@ function Favorites({
12
11
  }) {
13
12
  const {
14
13
  t
15
- } = useTranslation(), getAppName = (app) => app.prefix && app.prefix.length > 1 ? t(app.prefix.substring(1)) : t(app.displayName) || "", visibleApps = useMemo(() => apps.filter((app) => app.display !== !1).sort((a, b) => getAppName(a).localeCompare(getAppName(b), void 0, {
16
- sensitivity: "base"
17
- })), [apps, t]);
14
+ } = useTranslation(), getAppName = (app) => app.prefix && app.prefix.length > 1 ? t(app.prefix.substring(1)) : t(app.displayName) || "";
18
15
  return /* @__PURE__ */ jsxs(HomeCard, { variant: "secondary", children: [
19
16
  /* @__PURE__ */ jsx(HomeCard.Header, { title: t("homepage.favorites.title", "Favoris"), actionLabel: t("homepage.favorites.all", "Mes applis"), onActionClick: onSeeAllClick, actionRightIcon: /* @__PURE__ */ jsx(SvgIconArrowRight, {}) }),
20
- /* @__PURE__ */ jsx(HomeCard.Content, { children: /* @__PURE__ */ jsx("div", { className: "favorites-content", children: visibleApps.length === 0 ? /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "12", children: [
17
+ /* @__PURE__ */ jsx(HomeCard.Content, { children: /* @__PURE__ */ jsx("div", { className: "favorites-content", children: apps.length === 0 ? /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "12", children: [
21
18
  /* @__PURE__ */ jsx("img", { src: illuEmptyFavorite, alt: "", width: 50, height: 50 }),
22
19
  /* @__PURE__ */ jsx("span", { className: "favorites-empty-text", children: t("homepage.favorites.empty", "Ajouter des applications à vos favoris pour les retrouver ici et y accéder rapidement !") })
23
- ] }) : /* @__PURE__ */ jsx(Flex, { wrap: "wrap", gap: "8 16", children: visibleApps.map((app) => {
20
+ ] }) : /* @__PURE__ */ jsx(Flex, { wrap: "wrap", gap: "8 16", children: apps.map((app) => {
24
21
  const appName = getAppName(app), opensInNewTab = app.isExternal || app.target === "_blank";
25
22
  return /* @__PURE__ */ jsx("a", { href: app.address, "aria-label": appName, title: appName, target: opensInNewTab ? "_blank" : void 0, rel: opensInNewTab ? "noopener noreferrer" : void 0, children: /* @__PURE__ */ jsx(AppIcon, { app, size: "40", variant: "square" }) }, app.name);
26
23
  }) }) }) })
@@ -6,13 +6,13 @@ import { Navbar } from "../../../../components/Layout/components/Navbar.js";
6
6
  import { NavItem } from "../../../../components/Layout/components/NavItem.js";
7
7
  import { NavLink } from "../../../../components/Layout/components/NavLink.js";
8
8
  import useHeader from "../../../../components/Layout/hooks/useHeader.js";
9
+ import SvgIconSetBackground from "../../../icons/components/IconSetBackground.js";
9
10
  import SvgIconCommunitiesBeta from "../../../icons/components/nav/IconCommunitiesBeta.js";
10
11
  import SvgIconDisconnect from "../../../icons/components/nav/IconDisconnect.js";
11
12
  import SvgIconHomeBeta from "../../../icons/components/nav/IconHomeBeta.js";
12
13
  import SvgIconMessagesBeta from "../../../icons/components/nav/IconMessagesBeta.js";
13
14
  import SvgIconMyAppsBeta from "../../../icons/components/nav/IconMyAppsBeta.js";
14
15
  import SvgIconNotificationBeta from "../../../icons/components/nav/IconNotificationBeta.js";
15
- import { useHasNotificationToday } from "../Notifications/hooks/useNotificationList.js";
16
16
  import useConversation from "../../../../hooks/useConversation/useConversation.js";
17
17
  import useUser from "../../../../hooks/useUser/useUser.js";
18
18
  import useHasWorkflow from "../../../../hooks/useHasWorkflow/useHasWorkflow.js";
@@ -46,7 +46,7 @@ const Header = ({
46
46
  avatar
47
47
  }), {
48
48
  theme
49
- } = useEdificeTheme(), hasMessages = messages > 0, hasNotificationToday = useHasNotificationToday(), [userRef, isUserHovered] = useHover(), popoverUserId = useId(), handleNotificationsClick = () => {
49
+ } = useEdificeTheme(), hasMessages = messages > 0, [userRef, isUserHovered] = useHover(), popoverUserId = useId(), handleNotificationsClick = () => {
50
50
  onNotificationsClick == null || onNotificationsClick();
51
51
  };
52
52
  return /* @__PURE__ */ jsx("header", { className: classes, "data-product": dataProduct, children: /* @__PURE__ */ jsxs(Navbar, { className: "px-24", children: [
@@ -66,30 +66,19 @@ const Header = ({
66
66
  /* @__PURE__ */ jsx(VisuallyHidden, { children: t("conversation") })
67
67
  ] }) }),
68
68
  /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsx(NavLink, { link: "/welcome", translate: t("navbar.applications"), "data-testid": "header-my-apps-button", children: /* @__PURE__ */ jsx(SvgIconMyAppsBeta, {}) }) }),
69
- /* @__PURE__ */ jsxs(NavItem, { className: "position-relative", children: [
70
- /* @__PURE__ */ jsx(ButtonBeta, { leftIcon: /* @__PURE__ */ jsx(SvgIconNotificationBeta, {}), variant: "ghost", onClick: handleNotificationsClick }),
71
- hasNotificationToday && /* @__PURE__ */ jsx("span", { style: {
72
- position: "absolute",
73
- top: 0,
74
- right: 0,
75
- width: 15,
76
- height: 15,
77
- background: "red",
78
- borderRadius: "50%",
79
- border: "2px solid white",
80
- pointerEvents: "none",
81
- zIndex: 1,
82
- display: "block"
83
- }, "aria-label": t("homepage.notifications.new-badge", {
84
- defaultValue: "Nouvelle notification"
85
- }) })
86
- ] }),
69
+ /* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsx(ButtonBeta, { leftIcon: /* @__PURE__ */ jsx(SvgIconNotificationBeta, {}), variant: "ghost", onClick: handleNotificationsClick }) }),
87
70
  /* @__PURE__ */ jsxs(NavItem, { className: "position-relative", ref: userRef, id: popoverUserId, "aria-haspopup": "true", "aria-expanded": isUserHovered, "data-testid": "header-user-menu-button", children: [
88
71
  /* @__PURE__ */ jsx(NavLink, { link: "/userbook/mon-compte", translate: t("navbar.myaccount"), "data-testid": "header-user-profile-button", children: /* @__PURE__ */ jsx(Avatar, { alt: userName, size: "sm", src: userAvatar, variant: "circle", className: "bg-white", width: "32", height: "32" }) }),
89
- /* @__PURE__ */ jsx(Popover, { align: "end", className: "widget", id: popoverUserId, isVisible: isUserHovered, children: /* @__PURE__ */ jsx(PopoverBody, { children: /* @__PURE__ */ jsxs("a", { href: "/auth/logout?callback=" + ((theme == null ? void 0 : theme.logoutCallback) ?? ""), className: "nav-link logout d-flex align-items-center gap-8", "data-testid": "header-logout-button", children: [
90
- /* @__PURE__ */ jsx(SvgIconDisconnect, { className: "icon logout" }),
91
- /* @__PURE__ */ jsx("span", { id: "logout-label", className: "nav-text", children: t("navbar.disconnect") })
92
- ] }) }) })
72
+ /* @__PURE__ */ jsx(Popover, { align: "end", className: "widget", id: popoverUserId, isVisible: isUserHovered, children: /* @__PURE__ */ jsxs(PopoverBody, { children: [
73
+ /* @__PURE__ */ jsxs("a", { href: "/timeline/customize", className: "nav-link customize d-flex align-items-center gap-8", "data-testid": "header-customize-button", children: [
74
+ /* @__PURE__ */ jsx(SvgIconSetBackground, { className: "icon" }),
75
+ /* @__PURE__ */ jsx("span", { id: "cutomize-label", className: "nav-text", children: t("navbar.customize") })
76
+ ] }),
77
+ /* @__PURE__ */ jsxs("a", { href: "/auth/logout?callback=" + ((theme == null ? void 0 : theme.logoutCallback) ?? ""), className: "nav-link logout d-flex align-items-center gap-8", "data-testid": "header-logout-button", children: [
78
+ /* @__PURE__ */ jsx(SvgIconDisconnect, { className: "icon logout" }),
79
+ /* @__PURE__ */ jsx("span", { id: "logout-label", className: "nav-text", children: t("navbar.disconnect") })
80
+ ] })
81
+ ] }) })
93
82
  ] })
94
83
  ] })
95
84
  ] }) });
@@ -1,15 +1,14 @@
1
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import NotificationOptionsMenu from "./components/NotificationOptionsMenu.js";
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
3
2
  import SystemNotificationItem from "./components/SystemNotificationItem.js";
4
3
  import UserNotificationItem from "./components/UserNotificationItem.js";
5
4
  import { notificationAdapter } from "./components/notificationAdapter.js";
6
5
  const NotificationItem = ({
7
6
  notification
8
7
  }) => {
9
- const notif = notificationAdapter(notification), menu = /* @__PURE__ */ jsx(NotificationOptionsMenu, { notificationId: notification._id });
8
+ const notif = notificationAdapter(notification);
10
9
  return /* @__PURE__ */ jsxs(Fragment, { children: [
11
- notif.type === "user" && /* @__PURE__ */ jsx(UserNotificationItem, { notification: notif, menu }),
12
- notif.type === "system" && /* @__PURE__ */ jsx(SystemNotificationItem, { notification: notif, menu })
10
+ notif.type === "user" && /* @__PURE__ */ jsx(UserNotificationItem, { notification: notif }),
11
+ notif.type === "system" && /* @__PURE__ */ jsx(SystemNotificationItem, { notification: notif })
13
12
  ] });
14
13
  };
15
14
  export {
@@ -2,12 +2,6 @@ import { NotificationModel } from '@edifice.io/client';
2
2
  export type NotificationListProps = {
3
3
  /** List of notifications to display */
4
4
  notifications?: NotificationModel[];
5
- /** All notification types available to filter on */
6
- notificationTypes?: string[];
7
- /** Notification types currently applied as filter */
8
- selectedTypes?: string[];
9
- /** Callback when the user validates a new filter selection */
10
- onFilterChange?: (types: string[]) => void;
11
5
  /** Callback when the notifications list is closed */
12
6
  onCloseNotifications?: () => void;
13
7
  /** Callback to load the next page of notifications, used for infinite scrolling */
@@ -18,7 +12,7 @@ export type NotificationListProps = {
18
12
  isLoading?: boolean;
19
13
  };
20
14
  declare const NotificationList: {
21
- ({ notifications, notificationTypes, selectedTypes, onFilterChange, onCloseNotifications, onLoadNextPage, hasNextPage, isLoading, }: NotificationListProps): import("react/jsx-runtime").JSX.Element;
15
+ ({ notifications, onCloseNotifications, onLoadNextPage, hasNextPage, isLoading, }: NotificationListProps): import("react/jsx-runtime").JSX.Element;
22
16
  displayName: string;
23
17
  };
24
18
  export default NotificationList;
@@ -2,7 +2,6 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import illuEmptyNotification from "@edifice.io/bootstrap/dist/images/homepage/illu-empty-notifications.png";
3
3
  import { useTranslation } from "react-i18next";
4
4
  import SvgIconClose from "../../../icons/components/IconClose.js";
5
- import NotificationFilterMenu from "./components/NotificationFilterMenu.js";
6
5
  import NotificationItem from "./NotificationItem.js";
7
6
  import NotificationListSkeleton from "./NotificationListSkeleton.js";
8
7
  import NotificationSkeleton from "./NotificationSkeleton.js";
@@ -13,9 +12,6 @@ import EmptyScreen from "../../../../components/EmptyScreen/EmptyScreen.js";
13
12
  import Divider from "../../../../components/Divider/Divider.js";
14
13
  const NotificationList = ({
15
14
  notifications,
16
- notificationTypes,
17
- selectedTypes,
18
- onFilterChange,
19
15
  onCloseNotifications,
20
16
  onLoadNextPage,
21
17
  hasNextPage,
@@ -30,10 +26,7 @@ const NotificationList = ({
30
26
  };
31
27
  return /* @__PURE__ */ jsx("section", { role: "region", className: "notification-list", children: /* @__PURE__ */ jsxs(Flex, { direction: "column", children: [
32
28
  /* @__PURE__ */ jsxs(Flex, { justify: "between", align: "center", wrap: "nowrap", className: "py-16 ps-24 pe-8", children: [
33
- /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "8", className: "notification-list-title", children: [
34
- /* @__PURE__ */ jsx("h4", { className: "text-truncate", children: t("homepage.notifications-list.title") }),
35
- notificationTypes && notificationTypes.length > 0 && /* @__PURE__ */ jsx(NotificationFilterMenu, { notificationTypes, selectedTypes: selectedTypes ?? notificationTypes, onFilterChange: (types) => onFilterChange == null ? void 0 : onFilterChange(types) })
36
- ] }),
29
+ /* @__PURE__ */ jsx("h4", { className: "text-truncate", children: t("homepage.notifications-list.title") }),
37
30
  onCloseNotifications && /* @__PURE__ */ jsx(ButtonBeta, { color: "tertiary", variant: "ghost", rightIcon: /* @__PURE__ */ jsx(SvgIconClose, {}), onClick: handleCloseClick, "aria-label": t("homepage.notifications-list.close"), title: t("homepage.notifications-list.close"), "data-testid": "notification-list-close-button" })
38
31
  ] }),
39
32
  (notifications == null ? void 0 : notifications.length) === 0 ? /* @__PURE__ */ jsx("div", { className: "mx-24", children: /* @__PURE__ */ jsx(EmptyScreen, { size: 135, imageSrc: illuEmptyNotification, imageAlt: t("homepage.notifications-list.empty.description"), text: t("homepage.notifications-list.empty.description") }) }) : /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -6,14 +6,11 @@ const NotificationListContainer = ({
6
6
  }) => {
7
7
  const {
8
8
  notifications,
9
- notificationTypes,
10
- selectedTypes,
11
- setSelectedTypes,
12
9
  hasNextPage,
13
10
  loadNextPage,
14
11
  isLoading
15
12
  } = useNotificationListContainer();
16
- return /* @__PURE__ */ jsx(NotificationList, { notifications, notificationTypes, selectedTypes, onFilterChange: setSelectedTypes, onCloseNotifications, onLoadNextPage: () => {
13
+ return /* @__PURE__ */ jsx(NotificationList, { notifications, onCloseNotifications, onLoadNextPage: () => {
17
14
  hasNextPage && !isLoading && loadNextPage();
18
15
  }, hasNextPage, isLoading });
19
16
  };
@@ -5,7 +5,6 @@ export type NotificationItemProps = {
5
5
  date: Date;
6
6
  uri?: string;
7
7
  children?: ReactNode;
8
- menu?: ReactNode;
9
8
  };
10
9
  /**
11
10
  * Base layout for a single notification row.
@@ -19,7 +18,7 @@ export type NotificationItemProps = {
19
18
  * `SystemNotification` instead of consuming this directly.
20
19
  */
21
20
  declare const CommonNotificationItem: {
22
- ({ picture, message, date, uri, children, menu, }: NotificationItemProps): import("react/jsx-runtime").JSX.Element;
21
+ ({ picture, message, date, uri, children, }: NotificationItemProps): import("react/jsx-runtime").JSX.Element;
23
22
  displayName: string;
24
23
  };
25
24
  export default CommonNotificationItem;
@@ -6,25 +6,21 @@ const CommonNotificationItem = ({
6
6
  message,
7
7
  date,
8
8
  uri,
9
- children,
10
- menu
9
+ children
11
10
  }) => {
12
11
  const {
13
12
  formatTimeAgo,
14
13
  formatDate
15
14
  } = useDate();
16
- return /* @__PURE__ */ jsx(Flex, { direction: "column", className: "notification-item", gap: "8", children: /* @__PURE__ */ jsxs(Flex, { direction: "row", justify: "between", wrap: "nowrap", gap: "8", children: [
17
- /* @__PURE__ */ jsxs(Flex, { direction: "row", align: "start", gap: "8", className: "notification-item-content-wrapper", children: [
18
- /* @__PURE__ */ jsx("div", { className: "notification-item-picture", children: picture }),
19
- /* @__PURE__ */ jsx("a", { href: uri, className: "notification-item-link", "data-testid": "notification-item-content", children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "8", children: [
20
- /* @__PURE__ */ jsx("div", { className: "notification-item-message", dangerouslySetInnerHTML: {
21
- __html: message
22
- } }),
23
- children,
24
- /* @__PURE__ */ jsx("p", { className: "notification-item-date", title: formatDate(date, "LLL"), children: formatTimeAgo(date) })
25
- ] }) })
26
- ] }),
27
- menu && /* @__PURE__ */ jsx("div", { className: "notification-item-menu", children: menu })
15
+ return /* @__PURE__ */ jsx(Flex, { direction: "column", className: "notification-item", gap: "8", children: /* @__PURE__ */ jsxs(Flex, { direction: "row", gap: "8", children: [
16
+ /* @__PURE__ */ jsx("div", { className: "notification-item-picture", children: picture }),
17
+ /* @__PURE__ */ jsx("a", { href: uri, "data-testid": "notification-item-content", children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "8", children: [
18
+ /* @__PURE__ */ jsx("div", { className: "notification-item-message", dangerouslySetInnerHTML: {
19
+ __html: message
20
+ } }),
21
+ children,
22
+ /* @__PURE__ */ jsx("p", { className: "notification-item-date", title: formatDate(date, "LLL"), children: formatTimeAgo(date) })
23
+ ] }) })
28
24
  ] }) });
29
25
  };
30
26
  export {
@@ -1,8 +1,6 @@
1
- import { ReactNode } from 'react';
2
1
  import { SystemWebNotification } from './notificationAdapter';
3
2
  export type SystemNotificationItemProps = {
4
3
  notification: SystemWebNotification;
5
- menu?: ReactNode;
6
4
  };
7
5
  /**
8
6
  * Renders a system notification (no sender) using an app icon as the picture.
@@ -11,7 +9,7 @@ export type SystemNotificationItemProps = {
11
9
  * rather than this component directly.
12
10
  */
13
11
  declare const SystemNotificationItem: {
14
- ({ notification, menu, }: SystemNotificationItemProps): import("react/jsx-runtime").JSX.Element;
12
+ ({ notification, }: SystemNotificationItemProps): import("react/jsx-runtime").JSX.Element;
15
13
  displayName: string;
16
14
  };
17
15
  export default SystemNotificationItem;
@@ -3,8 +3,7 @@ import { useTranslation } from "react-i18next";
3
3
  import CommonNotificationItem from "./CommonNotificationItem.js";
4
4
  import AppIcon from "../../../../../components/AppIcon/AppIcon.js";
5
5
  const SystemNotificationItem = ({
6
- notification,
7
- menu
6
+ notification
8
7
  }) => {
9
8
  const {
10
9
  params,
@@ -14,7 +13,7 @@ const SystemNotificationItem = ({
14
13
  } = notification, {
15
14
  t
16
15
  } = useTranslation(), appName = t(params.appCode);
17
- return /* @__PURE__ */ jsx(CommonNotificationItem, { uri, message, date, menu, picture: /* @__PURE__ */ jsx("a", { href: uri, title: appName, "data-testid": "notification-item-app-icon", "aria-label": t("homepage.notifications.app-icon.placeholder"), children: /* @__PURE__ */ jsx(AppIcon, { app: params.appCode, size: "24", variant: "square", className: "notification-item-app-icon" }) }) });
16
+ return /* @__PURE__ */ jsx(CommonNotificationItem, { uri, message, date, picture: /* @__PURE__ */ jsx("a", { href: uri, title: appName, "data-testid": "notification-item-app-icon", "aria-label": t("homepage.notifications.app-icon.placeholder"), children: /* @__PURE__ */ jsx(AppIcon, { app: params.appCode, size: "24", variant: "square", className: "notification-item-app-icon" }) }) });
18
17
  };
19
18
  export {
20
19
  SystemNotificationItem as default
@@ -1,8 +1,6 @@
1
- import { ReactNode } from 'react';
2
1
  import { UserWebNotification } from './notificationAdapter';
3
2
  export type UserNotificationItemProps = {
4
3
  notification: UserWebNotification;
5
- menu?: ReactNode;
6
4
  };
7
5
  /**
8
6
  * Renders a user-triggered notification using the sender's avatar as the picture.
@@ -11,7 +9,7 @@ export type UserNotificationItemProps = {
11
9
  * — prefer using `Notification` at the top level rather than this component directly.
12
10
  */
13
11
  declare const UserNotificationItem: {
14
- ({ notification, menu, }: UserNotificationItemProps): import("react/jsx-runtime").JSX.Element;
12
+ ({ notification }: UserNotificationItemProps): import("react/jsx-runtime").JSX.Element;
15
13
  displayName: string;
16
14
  };
17
15
  export default UserNotificationItem;
@@ -5,8 +5,7 @@ import NotificationItemResource from "./NotificationItemResource.js";
5
5
  import useDirectory from "../../../../../hooks/useDirectory/useDirectory.js";
6
6
  import Avatar from "../../../../../components/Avatar/Avatar.js";
7
7
  const UserNotificationItem = ({
8
- notification,
9
- menu
8
+ notification
10
9
  }) => {
11
10
  const {
12
11
  getAvatarURL,
@@ -19,7 +18,7 @@ const UserNotificationItem = ({
19
18
  } = notification, {
20
19
  t
21
20
  } = useTranslation(), userName = t(params.username);
22
- return /* @__PURE__ */ jsx(CommonNotificationItem, { uri, message, date, menu, picture: /* @__PURE__ */ jsx("a", { href: getUserbookURL(params.userId, "user"), title: userName, "data-testid": "notification-item-avatar", children: /* @__PURE__ */ jsx(Avatar, { "aria-label": t("homepage.notifications.avatar.placeholder"), src: getAvatarURL(params.userId, "user"), alt: userName, variant: "circle", className: "notification-item-avatar" }) }), children: /* @__PURE__ */ jsx(NotificationItemResource, { appCode: params.appCode, appI18nKey: params.appI18nKey }) });
21
+ return /* @__PURE__ */ jsx(CommonNotificationItem, { uri, message, date, picture: /* @__PURE__ */ jsx("a", { href: getUserbookURL(params.userId, "user"), title: userName, "data-testid": "notification-item-avatar", children: /* @__PURE__ */ jsx(Avatar, { "aria-label": t("homepage.notifications.avatar.placeholder"), src: getAvatarURL(params.userId, "user"), alt: userName, variant: "circle", className: "notification-item-avatar" }) }), children: /* @__PURE__ */ jsx(NotificationItemResource, { appCode: params.appCode, appI18nKey: params.appI18nKey }) });
23
22
  };
24
23
  export {
25
24
  UserNotificationItem as default
@@ -26,7 +26,6 @@ export type SystemWebNotification = WebNotificationBase & {
26
26
  };
27
27
  /** Discriminated union — narrow on `type` to get the specific variant. */
28
28
  export type WebNotification = UserWebNotification | SystemWebNotification;
29
- export declare const getAppCodeAndI18nKey: (appCode: string) => [string, string];
30
29
  /**
31
30
  * Transforms a raw `NotificationModel` (API shape) into a `WebNotification`
32
31
  * ready for rendering.