@edifice.io/react 2.6.7-feat-INTEG-1924-port-react-nextcloud-filetree.20260929125646 → 2.6.8

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 (106) hide show
  1. package/dist/components/Alert/Alert.js +47 -23
  2. package/dist/components/AppIcon/AppIcon.js +11 -5
  3. package/dist/components/Form/FormText.js +11 -6
  4. package/dist/components/Image/Image.js +5 -2
  5. package/dist/components/Input/Input.d.ts +11 -2
  6. package/dist/components/Input/Input.js +43 -21
  7. package/dist/components/Label/Label.js +4 -4
  8. package/dist/components/Layout/Layout.js +15 -11
  9. package/dist/components/LinkPill/LinkPill.d.ts +41 -0
  10. package/dist/components/LinkPill/LinkPill.js +28 -0
  11. package/dist/components/LinkPill/index.d.ts +2 -0
  12. package/dist/components/ModalBeta/ModalBeta.d.ts +47 -0
  13. package/dist/components/ModalBeta/ModalBeta.js +62 -0
  14. package/dist/components/ModalBeta/ModalBetaBody.d.ts +19 -0
  15. package/dist/components/ModalBeta/ModalBetaBody.js +15 -0
  16. package/dist/components/ModalBeta/ModalBetaContext.d.ts +7 -0
  17. package/dist/components/ModalBeta/ModalBetaContext.js +15 -0
  18. package/dist/components/ModalBeta/ModalBetaFooter.d.ts +13 -0
  19. package/dist/components/ModalBeta/ModalBetaFooter.js +7 -0
  20. package/dist/components/ModalBeta/ModalBetaHeader.d.ts +23 -0
  21. package/dist/components/ModalBeta/ModalBetaHeader.js +31 -0
  22. package/dist/components/ModalBeta/index.d.ts +2 -0
  23. package/dist/components/PageLayout/PageLayout.d.ts +4 -0
  24. package/dist/components/PageLayout/PageLayout.js +37 -14
  25. package/dist/components/PageLayout/components/PageLayoutContent.js +5 -1
  26. package/dist/components/PageLayout/components/PageLayoutHelpZone.d.ts +12 -0
  27. package/dist/components/PageLayout/components/PageLayoutHelpZone.js +6 -0
  28. package/dist/components/Table/components/Table.d.ts +2 -2
  29. package/dist/components/Table/components/TableTd.d.ts +1 -1
  30. package/dist/components/Table/components/TableTh.d.ts +1 -1
  31. package/dist/components/Tree/utilities/tree.js +1 -21
  32. package/dist/components/index.d.ts +2 -0
  33. package/dist/homepage.js +12 -1
  34. package/dist/hooks/index.d.ts +2 -1
  35. package/dist/hooks/useBackground/index.d.ts +1 -0
  36. package/dist/hooks/useBackground/useBackground.d.ts +8 -0
  37. package/dist/hooks/useBackground/useBackground.js +18 -0
  38. package/dist/hooks/useClickOutside/useClickOutside.d.ts +1 -1
  39. package/dist/hooks/useClickOutside/useClickOutside.js +3 -2
  40. package/dist/hooks/useToast/useToast.d.ts +1 -0
  41. package/dist/hooks/useToast/useToast.js +12 -9
  42. package/dist/hooks/useUserPreferences/index.d.ts +1 -0
  43. package/dist/hooks/useUserPreferences/useUserPreferences.d.ts +9 -0
  44. package/dist/hooks/useUserPreferences/useUserPreferences.js +40 -0
  45. package/dist/hooks/useZendeskGuide/useZendeskGuide.d.ts +14 -2
  46. package/dist/hooks/useZendeskGuide/useZendeskGuide.js +51 -24
  47. package/dist/index.js +60 -58
  48. package/dist/modules/HelpZone/HelpZone.d.ts +13 -0
  49. package/dist/modules/HelpZone/HelpZone.js +52 -0
  50. package/dist/modules/HelpZone/HelpZoneContainer.d.ts +4 -0
  51. package/dist/modules/HelpZone/HelpZoneContainer.js +18 -0
  52. package/dist/modules/HelpZone/index.d.ts +3 -0
  53. package/dist/modules/homepage/components/Favorites/Favorites.js +2 -2
  54. package/dist/modules/homepage/components/Header/Header.js +11 -4
  55. package/dist/modules/homepage/components/HomeCard/HomeCard.d.ts +1 -1
  56. package/dist/modules/homepage/components/HomeCard/HomeCardHeader.d.ts +15 -1
  57. package/dist/modules/homepage/components/HomeCard/HomeCardHeader.js +2 -1
  58. package/dist/modules/homepage/components/Notifications/components/NotificationFilterModal.js +36 -26
  59. package/dist/modules/homepage/components/Notifications/components/ReportNotificationModal.js +1 -1
  60. package/dist/modules/homepage/components/Notifications/services/queries/notification.js +9 -2
  61. package/dist/modules/homepage/components/UsefulLinks/LinkForm.d.ts +13 -0
  62. package/dist/modules/homepage/components/UsefulLinks/LinkForm.js +67 -0
  63. package/dist/modules/homepage/components/UsefulLinks/UsefulLinks.d.ts +6 -0
  64. package/dist/modules/homepage/components/UsefulLinks/UsefulLinks.js +31 -0
  65. package/dist/modules/homepage/components/UsefulLinks/UsefulLinksContainer.d.ts +1 -0
  66. package/dist/modules/homepage/components/UsefulLinks/UsefulLinksContainer.js +40 -0
  67. package/dist/modules/homepage/components/UsefulLinks/UsefulLinksModal.d.ts +11 -0
  68. package/dist/modules/homepage/components/UsefulLinks/UsefulLinksModal.js +65 -0
  69. package/dist/modules/homepage/components/UsefulLinks/hooks/useUsefulLinksContainer.d.ts +19 -0
  70. package/dist/modules/homepage/components/UsefulLinks/hooks/useUsefulLinksContainer.js +26 -0
  71. package/dist/modules/homepage/components/UsefulLinks/index.d.ts +5 -0
  72. package/dist/modules/homepage/components/UsefulLinks/services/api/index.d.ts +6 -0
  73. package/dist/modules/homepage/components/UsefulLinks/services/api/index.js +5 -0
  74. package/dist/modules/homepage/components/UsefulLinks/services/api/usefulLinksService.d.ts +31 -0
  75. package/dist/modules/homepage/components/UsefulLinks/services/api/usefulLinksService.js +50 -0
  76. package/dist/modules/homepage/components/UsefulLinks/services/queries/usefulLinks.d.ts +20 -0
  77. package/dist/modules/homepage/components/UsefulLinks/services/queries/usefulLinks.js +65 -0
  78. package/dist/modules/homepage/components/UserSpace/hooks/useProfileLinks.js +18 -8
  79. package/dist/modules/homepage/components/index.d.ts +1 -0
  80. package/dist/modules/icons/components/logo/IconLogoEdificeFull.d.ts +7 -0
  81. package/dist/modules/icons/components/logo/IconLogoEdificeFull.js +26 -0
  82. package/dist/modules/icons/components/logo/IconLogoEdificeSmall.d.ts +7 -0
  83. package/dist/modules/icons/components/logo/IconLogoEdificeSmall.js +17 -0
  84. package/dist/modules/icons/components/logo/index.d.ts +2 -0
  85. package/dist/modules/multimedia/FileCard/index.d.ts +0 -2
  86. package/dist/modules/multimedia/Linker/InternalLinker/InternalLinker.d.ts +1 -7
  87. package/dist/modules/multimedia/Linker/InternalLinker/InternalLinker.js +0 -2
  88. package/dist/modules/multimedia/MediaLibrary/MediaLibrary.d.ts +2 -2
  89. package/dist/modules/multimedia/MediaLibrary/MediaLibrary.js +11 -36
  90. package/dist/modules/multimedia/MediaLibrary/innertabs/index.d.ts +0 -1
  91. package/dist/modules/multimedia/MediaLibrary/innertabs/index.js +0 -2
  92. package/dist/modules/multimedia/Workspace/Workspace.js +5 -8
  93. package/dist/modules/multimedia/index.d.ts +0 -1
  94. package/dist/modules/widgets/index.d.ts +1 -1
  95. package/dist/multimedia.js +12 -16
  96. package/package.json +6 -6
  97. package/dist/hooks/useNextcloudSearch/index.d.ts +0 -1
  98. package/dist/hooks/useNextcloudSearch/useNextcloudSearch.d.ts +0 -14
  99. package/dist/hooks/useNextcloudSearch/useNextcloudSearch.js +0 -64
  100. package/dist/modules/multimedia/FileCard/NextcloudFileCard.d.ts +0 -25
  101. package/dist/modules/multimedia/FileCard/NextcloudFileCard.js +0 -102
  102. package/dist/modules/multimedia/MediaLibrary/innertabs/Nextcloud.d.ts +0 -1
  103. package/dist/modules/multimedia/MediaLibrary/innertabs/Nextcloud.js +0 -48
  104. package/dist/modules/multimedia/Nextcloud/Nextcloud.d.ts +0 -24
  105. package/dist/modules/multimedia/Nextcloud/Nextcloud.js +0 -124
  106. package/dist/modules/multimedia/Nextcloud/index.d.ts +0 -2
@@ -5,7 +5,7 @@ import { useEdificeTheme } from "../../providers/EdificeThemeProvider/EdificeThe
5
5
  import useUser from "../useUser/useUser.js";
6
6
  import useIsAdml from "../useIsAdml/useIsAdml.js";
7
7
  import useHasWorkflow from "../useHasWorkflow/useHasWorkflow.js";
8
- function useZendeskGuide() {
8
+ function useZendeskGuide(headerColor) {
9
9
  const {
10
10
  currentLanguage
11
11
  } = useEdificeClient(), {
@@ -14,7 +14,13 @@ function useZendeskGuide() {
14
14
  isAdml
15
15
  } = useIsAdml(), {
16
16
  theme
17
- } = useEdificeTheme(), isMobileView = window.innerWidth <= 768, hasSupportWorkflow = useHasWorkflow("net.atos.entng.support.controllers.DisplayController|view"), [locationPathname, setLocationPathname] = useState(""), [dataModule, setDataModule] = useState(void 0), setZendeskGuideLabels = () => {
17
+ } = 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
+ }, close = () => {
21
+ var _a;
22
+ (_a = window.zE) == null || _a.call(window, "webWidget", "close");
23
+ }, setZendeskGuideLabels = () => {
18
24
  const modulePathnameSplit = locationPathname.split("/");
19
25
  let moduleLabel = "", labels = "";
20
26
  if (dataModule != null && dataModule.labels && Object.keys(dataModule == null ? void 0 : dataModule.labels).length > 0 && modulePathnameSplit.length > 1) {
@@ -33,8 +39,40 @@ function useZendeskGuide() {
33
39
  return useEffect(() => {
34
40
  window.location.pathname !== locationPathname && setLocationPathname(window.location.pathname), !(dataModule === void 0 || Object.keys(dataModule).length === 0) && setZendeskGuideLabels();
35
41
  }, [window.location.pathname, dataModule]), useEffect(() => {
36
- document.getElementById("ze-snippet") || hasSupportWorkflow === void 0 || (async () => {
37
- const zendeskGuideConfig = await odeServices.http().get("/zendeskGuide/config");
42
+ const registerWidgetHandlers = () => {
43
+ window.zE("webWidget:on", "open", function() {
44
+ setIsOpen(!0), hasSupportWorkflow && window.zE("webWidget", "updateSettings", {
45
+ webWidget: {
46
+ contactForm: {
47
+ suppress: !1
48
+ }
49
+ }
50
+ });
51
+ }), window.zE("webWidget:on", "close", function() {
52
+ setIsOpen(!1);
53
+ }), window.zE("webWidget:on", "userEvent", function(ref) {
54
+ const category = ref.category, action = ref.action, properties = ref.properties;
55
+ action === "Contact Form Shown" && category === "Zendesk Web Widget" && properties && properties.name === "contact-form" && hasSupportWorkflow && (window.zE("webWidget", "updateSettings", {
56
+ webWidget: {
57
+ contactForm: {
58
+ suppress: !0
59
+ }
60
+ }
61
+ }), window.zE("webWidget", "close"), window.open("/support/tickets/new", "_blank"));
62
+ });
63
+ };
64
+ if (document.getElementById("ze-snippet")) {
65
+ window.zE && (registerWidgetHandlers(), setIsReady(!0));
66
+ return;
67
+ }
68
+ hasSupportWorkflow !== void 0 && (async () => {
69
+ let zendeskGuideConfig;
70
+ try {
71
+ zendeskGuideConfig = await odeServices.http().get("/zendeskGuide/config");
72
+ } catch (error) {
73
+ console.warn("[useZendeskGuide] Failed to fetch the support widget config from `/zendeskGuide/config` — the widget (and HelpZone's button) won't show up. If you're running a local dev server, check that `/zendeskGuide` is proxied to your backend in your app's Vite dev proxy config.", error);
74
+ return;
75
+ }
38
76
  if (zendeskGuideConfig && zendeskGuideConfig.key && zendeskGuideConfig.key !== "") {
39
77
  const scriptZendesk = document.createElement("script");
40
78
  scriptZendesk.id = "ze-snippet", scriptZendesk.src = `https://static.zdassets.com/ekr/snippet.js?key=${zendeskGuideConfig.key}`, document.body.appendChild(scriptZendesk).onload = () => {
@@ -45,7 +83,8 @@ function useZendeskGuide() {
45
83
  }), Object.keys(zendeskGuideConfig.module).length > 0 && setDataModule(zendeskGuideConfig.module), window.zE("webWidget", "show"), window.zE("webWidget", "updateSettings", {
46
84
  webWidget: {
47
85
  color: {
48
- theme: zendeskGuideConfig.color || "#ffc400"
86
+ theme: zendeskGuideConfig.color || "#ffc400",
87
+ header: headerColor
49
88
  },
50
89
  zIndex: 3,
51
90
  launcher: {
@@ -74,28 +113,16 @@ function useZendeskGuide() {
74
113
  }
75
114
  }
76
115
  });
77
- }), window.zE("webWidget:on", "open", function() {
78
- hasSupportWorkflow && window.zE("webWidget", "updateSettings", {
79
- webWidget: {
80
- contactForm: {
81
- suppress: !1
82
- }
83
- }
84
- });
85
- }), window.zE("webWidget:on", "userEvent", function(ref) {
86
- const category = ref.category, action = ref.action, properties = ref.properties;
87
- action === "Contact Form Shown" && category === "Zendesk Web Widget" && properties && properties.name === "contact-form" && hasSupportWorkflow && (window.zE("webWidget", "updateSettings", {
88
- webWidget: {
89
- contactForm: {
90
- suppress: !0
91
- }
92
- }
93
- }), window.zE("webWidget", "close"), window.open("/support/tickets/new", "_blank"));
94
- });
116
+ }), registerWidgetHandlers(), setIsReady(!0);
95
117
  };
96
118
  }
97
119
  })();
98
- }, [hasSupportWorkflow]), null;
120
+ }, [hasSupportWorkflow]), {
121
+ isReady,
122
+ isOpen,
123
+ open,
124
+ close
125
+ };
99
126
  }
100
127
  export {
101
128
  useZendeskGuide as default
package/dist/index.js CHANGED
@@ -37,15 +37,15 @@ import { default as default35 } from "./modules/multimedia/ImageEditor/component
37
37
  import { default as default36 } from "./modules/multimedia/ImagePicker/ImagePicker.js";
38
38
  import { default as default37 } from "./components/Input/Input.js";
39
39
  import { default as default38 } from "./components/Label/Label.js";
40
- import { default as default39 } from "./components/Loading/Loading.js";
41
- import { default as default40 } from "./components/LoadingScreen/LoadingScreen.js";
42
- import { default as default41 } from "./components/Logo/Logo.js";
43
- import { default as default42 } from "./components/LogoBeta/LogoBeta.js";
44
- import { default as default43 } from "./modules/multimedia/MediaLibrary/MediaLibrary.js";
45
- import { default as default44 } from "./components/MediaViewer/MediaViewer.js";
46
- import { default as default45 } from "./components/Modal/Modal.js";
47
- import { default as default46 } from "./modules/multimedia/Nextcloud/Nextcloud.js";
48
- import { default as default47 } from "./modules/multimedia/FileCard/NextcloudFileCard.js";
40
+ import { default as default39 } from "./components/LinkPill/LinkPill.js";
41
+ import { default as default40 } from "./components/Loading/Loading.js";
42
+ import { default as default41 } from "./components/LoadingScreen/LoadingScreen.js";
43
+ import { default as default42 } from "./components/Logo/Logo.js";
44
+ import { default as default43 } from "./components/LogoBeta/LogoBeta.js";
45
+ import { default as default44 } from "./modules/multimedia/MediaLibrary/MediaLibrary.js";
46
+ import { default as default45 } from "./components/MediaViewer/MediaViewer.js";
47
+ import { default as default46 } from "./components/Modal/Modal.js";
48
+ import { default as default47 } from "./components/ModalBeta/ModalBeta.js";
49
49
  import { default as default48 } from "./modules/modals/OnboardingModal/OnboardingModal.js";
50
50
  import { default as default49 } from "./components/PageLayout/PageLayout.js";
51
51
  import { default as default50 } from "./components/PreventPropagation/PreventPropagation.js";
@@ -100,26 +100,25 @@ import { default as default98 } from "./hooks/useIsAdmlcOrAdmc/useIsAdmlcOrAdmc.
100
100
  import { default as default99 } from "./hooks/useKeyPress/useKeyPress.js";
101
101
  import { default as default100 } from "./hooks/useLibraryUrl/useLibraryUrl.js";
102
102
  import { default as default101 } from "./hooks/useMediaLibrary/useMediaLibrary.js";
103
- import { default as default102 } from "./hooks/useNextcloudSearch/useNextcloudSearch.js";
104
- import { default as default103 } from "./hooks/usePublicConf/usePublicConf.js";
105
- import { default as default104 } from "./hooks/useScrollToTop/useScrollToTop.js";
106
- import { default as default105 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
107
- import { default as default106 } from "./hooks/useTitle/useTitle.js";
108
- import { default as default107 } from "./hooks/useToast/useToast.js";
109
- import { default as default108 } from "./hooks/useToggle/useToggle.js";
110
- import { default as default109 } from "./hooks/useTrapFocus/useTrapFocus.js";
111
- import { default as default110 } from "./hooks/useTrashedResource/useTrashedResource.js";
112
- import { default as default111 } from "./hooks/useUiOverride/useUiOverride.js";
113
- import { default as default112 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
114
- import { default as default113 } from "./hooks/useUpload/useUpload.js";
115
- import { default as default114 } from "./hooks/useUploadFiles/useUploadFiles.js";
116
- import { default as default115 } from "./hooks/useUser/useUser.js";
117
- import { default as default116 } from "./hooks/useWorkspaceFile/useWorkspaceFile.js";
118
- import { default as default117 } from "./hooks/useWorkspaceFolders/useWorkspaceFolders.js";
119
- import { WORKSPACE_SHARED_FOLDER_ID, WORKSPACE_USER_FOLDER_ID, default as default118 } from "./hooks/useWorkspaceFolders/useWorkspaceFoldersTree.js";
120
- import { default as default119 } from "./hooks/useWorkspaceSearch/useWorkspaceSearch.js";
121
- import { default as default120 } from "./hooks/useXitiTrackPageLoad/useXitiTrackPageLoad.js";
122
- import { default as default121 } from "./hooks/useZendeskGuide/useZendeskGuide.js";
103
+ import { default as default102 } from "./hooks/usePublicConf/usePublicConf.js";
104
+ import { default as default103 } from "./hooks/useScrollToTop/useScrollToTop.js";
105
+ import { default as default104 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
106
+ import { default as default105 } from "./hooks/useTitle/useTitle.js";
107
+ import { default as default106 } from "./hooks/useToast/useToast.js";
108
+ import { default as default107 } from "./hooks/useToggle/useToggle.js";
109
+ import { default as default108 } from "./hooks/useTrapFocus/useTrapFocus.js";
110
+ import { default as default109 } from "./hooks/useTrashedResource/useTrashedResource.js";
111
+ import { default as default110 } from "./hooks/useUiOverride/useUiOverride.js";
112
+ import { default as default111 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
113
+ import { default as default112 } from "./hooks/useUpload/useUpload.js";
114
+ import { default as default113 } from "./hooks/useUploadFiles/useUploadFiles.js";
115
+ import { default as default114 } from "./hooks/useUser/useUser.js";
116
+ import { default as default115 } from "./hooks/useWorkspaceFile/useWorkspaceFile.js";
117
+ import { default as default116 } from "./hooks/useWorkspaceFolders/useWorkspaceFolders.js";
118
+ import { WORKSPACE_SHARED_FOLDER_ID, WORKSPACE_USER_FOLDER_ID, default as default117 } from "./hooks/useWorkspaceFolders/useWorkspaceFoldersTree.js";
119
+ import { default as default118 } from "./hooks/useWorkspaceSearch/useWorkspaceSearch.js";
120
+ import { default as default119 } from "./hooks/useXitiTrackPageLoad/useXitiTrackPageLoad.js";
121
+ import { default as default120 } from "./hooks/useZendeskGuide/useZendeskGuide.js";
123
122
  import { AccessiblePalette, DefaultPalette } from "./components/ColorPicker/ColorPalette.js";
124
123
  import { AntProvider } from "./providers/AntThemeProvider/AntProvider.js";
125
124
  import { BetaSwitch } from "./components/BetaSwitch/BetaSwitch.js";
@@ -155,6 +154,7 @@ import { emptyScreenMapping } from "./utilities/emptyscreen-mapping/emptyscreen-
155
154
  import { getRotateTransitionStyle } from "./utilities/rotate-transition-style/get-rotate-transition-style.js";
156
155
  import { invalidateQueriesWithFirstPage } from "./utilities/react-query/react-query-utils.js";
157
156
  import { mergeRefs, setRef } from "./utilities/refs/ref.js";
157
+ import { default as default121 } from "./hooks/useBackground/useBackground.js";
158
158
  import { useCheckable } from "./hooks/useCheckable/useCheckable.js";
159
159
  import { useEdificeClient } from "./providers/EdificeClientProvider/EdificeClientProvider.hook.js";
160
160
  import { useEdificeTheme } from "./providers/EdificeThemeProvider/EdificeThemeProvider.hook.js";
@@ -163,6 +163,7 @@ import { useOverlay } from "./components/PageLayout/hook/useOverlay.js";
163
163
  import { useScreeb } from "./hooks/useScreeb/useScreeb.js";
164
164
  import { useTreeSortable } from "./components/Tree/hooks/useTreeSortable.js";
165
165
  import { useTreeView } from "./components/TreeView/hooks/useTreeView.js";
166
+ import { default as default122 } from "./hooks/useUserPreferences/useUserPreferences.js";
166
167
  export {
167
168
  AccessiblePalette,
168
169
  default2 as ActionBar,
@@ -218,18 +219,18 @@ export {
218
219
  InternalLinker,
219
220
  default38 as Label,
220
221
  Layout,
222
+ default39 as LinkPill,
221
223
  List,
222
- default39 as Loading,
223
- default40 as LoadingScreen,
224
- default41 as Logo,
225
- default42 as LogoBeta,
226
- default43 as MediaLibrary,
227
- default44 as MediaViewer,
224
+ default40 as Loading,
225
+ default41 as LoadingScreen,
226
+ default42 as Logo,
227
+ default43 as LogoBeta,
228
+ default44 as MediaLibrary,
229
+ default45 as MediaViewer,
228
230
  Menu,
229
231
  MockedProvider,
230
- default45 as Modal,
231
- default46 as Nextcloud,
232
- default47 as NextcloudFileCard,
232
+ default46 as Modal,
233
+ default47 as ModalBeta,
233
234
  default48 as OnboardingModal,
234
235
  default49 as PageLayout,
235
236
  PageLayoutContext,
@@ -309,6 +310,7 @@ export {
309
310
  setRef,
310
311
  updateNode,
311
312
  updateParentIds,
313
+ default121 as useBackground,
312
314
  default79 as useBookmark,
313
315
  default80 as useBreakpoint,
314
316
  default81 as useBrowserInfo,
@@ -337,30 +339,30 @@ export {
337
339
  default99 as useKeyPress,
338
340
  default100 as useLibraryUrl,
339
341
  default101 as useMediaLibrary,
340
- default102 as useNextcloudSearch,
341
342
  useOverlay,
342
343
  usePageLayout,
343
- default103 as usePublicConf,
344
+ default102 as usePublicConf,
344
345
  useScreeb,
345
- default104 as useScrollToTop,
346
- default105 as useShareMutation,
347
- default106 as useTitle,
348
- default107 as useToast,
349
- default108 as useToggle,
350
- default109 as useTrapFocus,
351
- default110 as useTrashedResource,
346
+ default103 as useScrollToTop,
347
+ default104 as useShareMutation,
348
+ default105 as useTitle,
349
+ default106 as useToast,
350
+ default107 as useToggle,
351
+ default108 as useTrapFocus,
352
+ default109 as useTrashedResource,
352
353
  useTreeSortable,
353
354
  useTreeView,
354
- default111 as useUiOverride,
355
- default112 as useUpdateMutation,
356
- default113 as useUpload,
357
- default114 as useUploadFiles,
358
- default115 as useUser,
359
- default116 as useWorkspaceFile,
360
- default117 as useWorkspaceFolders,
361
- default118 as useWorkspaceFoldersTree,
362
- default119 as useWorkspaceSearch,
363
- default120 as useXitiTrackPageLoad,
364
- default121 as useZendeskGuide,
355
+ default110 as useUiOverride,
356
+ default111 as useUpdateMutation,
357
+ default112 as useUpload,
358
+ default113 as useUploadFiles,
359
+ default114 as useUser,
360
+ default122 as useUserPreferences,
361
+ default115 as useWorkspaceFile,
362
+ default116 as useWorkspaceFolders,
363
+ default117 as useWorkspaceFoldersTree,
364
+ default118 as useWorkspaceSearch,
365
+ default119 as useXitiTrackPageLoad,
366
+ default120 as useZendeskGuide,
365
367
  wrapTreeNode
366
368
  };
@@ -0,0 +1,13 @@
1
+ export interface HelpZoneProps {
2
+ /** True once the support widget is loaded and can be opened. */
3
+ isReady: boolean;
4
+ /** True while the support panel is open. */
5
+ isOpen: boolean;
6
+ onOpen: () => void;
7
+ onClose: () => void;
8
+ }
9
+ declare const HelpZone: {
10
+ ({ isReady, isOpen, onOpen, onClose }: HelpZoneProps): import('react').ReactPortal | null;
11
+ displayName: string;
12
+ };
13
+ export default HelpZone;
@@ -0,0 +1,52 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useRef, useEffect } from "react";
3
+ import clsx from "clsx";
4
+ import { createPortal } from "react-dom";
5
+ import { useTranslation } from "react-i18next";
6
+ import SvgIconQuestion from "../icons/components/IconQuestion.js";
7
+ import Tooltip from "../../components/Tooltip/Tooltip.js";
8
+ import SvgIconLogoEdificeSmall from "../icons/components/logo/IconLogoEdificeSmall.js";
9
+ import SvgIconLogoEdificeFull from "../icons/components/logo/IconLogoEdificeFull.js";
10
+ import ButtonBeta from "../../components/ButtonBeta/ButtonBeta.js";
11
+ const HelpZone = ({
12
+ isReady,
13
+ isOpen,
14
+ onOpen,
15
+ onClose
16
+ }) => {
17
+ const {
18
+ t
19
+ } = useTranslation(), [portalRoot, setPortalRoot] = useState(null), [isCompact, setIsCompact] = useState(!1), questionButtonRef = useRef(null);
20
+ if (useEffect(() => (document.body.classList.add("help-zone-active"), setPortalRoot(document.getElementById("portal")), () => {
21
+ document.body.classList.remove("help-zone-active");
22
+ }), []), useEffect(() => {
23
+ if (isCompact)
24
+ return;
25
+ const goCompact = () => setIsCompact(!0), handleClick = (event) => {
26
+ questionButtonRef.current && event.target instanceof Node && questionButtonRef.current.contains(event.target) || goCompact();
27
+ };
28
+ return document.addEventListener("scroll", goCompact, {
29
+ capture: !0,
30
+ passive: !0
31
+ }), document.addEventListener("click", handleClick), () => {
32
+ document.removeEventListener("scroll", goCompact, {
33
+ capture: !0
34
+ }), document.removeEventListener("click", handleClick);
35
+ };
36
+ }, [isCompact]), !isReady || !portalRoot)
37
+ return null;
38
+ const handleOpenHelpZone = () => isOpen ? onClose() : onOpen();
39
+ return /* @__PURE__ */ createPortal(/* @__PURE__ */ jsxs("div", { className: clsx("help-zone", {
40
+ "help-zone--open": isOpen
41
+ }), "aria-hidden": isOpen, children: [
42
+ /* @__PURE__ */ jsx("a", { className: "help-zone-badge", href: "https://edifice.io/releases/", target: "_blank", rel: "noopener noreferrer", "aria-label": t("help-zone.edifice-releases-notes"), children: /* @__PURE__ */ jsx(Tooltip, { message: t("help-zone.edifice-releases-notes"), placement: "top", className: "help-zone-tooltip", children: /* @__PURE__ */ jsx("span", { className: clsx("help-zone-logo", {
43
+ "help-zone-logo--compact": isCompact,
44
+ "help-zone-logo--full": !isCompact
45
+ }), children: isCompact ? /* @__PURE__ */ jsx(SvgIconLogoEdificeSmall, { width: 18, height: 18 }) : /* @__PURE__ */ jsx(SvgIconLogoEdificeFull, { width: 81, height: 18 }) }) }) }),
46
+ /* @__PURE__ */ jsx("span", { className: "help-zone-divider" }),
47
+ /* @__PURE__ */ jsx(ButtonBeta, { ref: questionButtonRef, className: "help-zone-question", "aria-label": t("help-zone.support.open"), color: "tertiary", variant: "ghost", onClick: handleOpenHelpZone, children: /* @__PURE__ */ jsx(Tooltip, { message: t("help-zone.support.open"), placement: "top", children: /* @__PURE__ */ jsx(SvgIconQuestion, { width: 24, height: 24, color: "white" }) }) })
48
+ ] }), portalRoot);
49
+ };
50
+ export {
51
+ HelpZone as default
52
+ };
@@ -0,0 +1,4 @@
1
+ export declare function HelpZoneContainer(): import("react/jsx-runtime").JSX.Element;
2
+ export declare namespace HelpZoneContainer {
3
+ var displayName: string;
4
+ }
@@ -0,0 +1,18 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import HelpZone from "./HelpZone.js";
3
+ import useZendeskGuide from "../../hooks/useZendeskGuide/useZendeskGuide.js";
4
+ function getHeaderColor() {
5
+ return getComputedStyle(document.documentElement).getPropertyValue("--primitive-blue-400").trim();
6
+ }
7
+ function HelpZoneContainer() {
8
+ const headerColor = getHeaderColor(), {
9
+ isReady,
10
+ isOpen,
11
+ open,
12
+ close
13
+ } = useZendeskGuide(headerColor);
14
+ return /* @__PURE__ */ jsx(HelpZone, { isReady, isOpen, onOpen: open, onClose: close });
15
+ }
16
+ export {
17
+ HelpZoneContainer
18
+ };
@@ -0,0 +1,3 @@
1
+ export * from './HelpZone';
2
+ export { default as HelpZone } from './HelpZone';
3
+ export * from './HelpZoneContainer';
@@ -16,10 +16,10 @@ function Favorites({
16
16
  sensitivity: "base"
17
17
  })), [apps, t]);
18
18
  return /* @__PURE__ */ jsxs(HomeCard, { variant: "secondary", children: [
19
- /* @__PURE__ */ jsx(HomeCard.Header, { title: t("homepage.favorites.title", "Favoris"), actionLabel: t("homepage.favorites.all", "Mes applis"), onActionClick: onSeeAllClick, actionRightIcon: /* @__PURE__ */ jsx(SvgIconArrowRight, {}) }),
19
+ /* @__PURE__ */ jsx(HomeCard.Header, { title: t("homepage.favorites.title"), actionLabel: t("homepage.favorites.all"), onActionClick: onSeeAllClick, actionRightIcon: /* @__PURE__ */ jsx(SvgIconArrowRight, {}) }),
20
20
  /* @__PURE__ */ jsx(HomeCard.Content, { children: /* @__PURE__ */ jsx("div", { className: "favorites-content", children: visibleApps.length === 0 ? /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "12", children: [
21
21
  /* @__PURE__ */ jsx("img", { src: illuEmptyFavorite, alt: "", width: 50, height: 50 }),
22
- /* @__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 !") })
22
+ /* @__PURE__ */ jsx("span", { className: "favorites-empty-text", children: t("homepage.favorites.empty") })
23
23
  ] }) : /* @__PURE__ */ jsx(Flex, { wrap: "wrap", gap: "8 16", children: visibleApps.map((app) => {
24
24
  const appName = getAppName(app), opensInNewTab = app.isExternal || app.target === "_blank";
25
25
  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);
@@ -6,6 +6,7 @@ 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";
@@ -86,10 +87,16 @@ const Header = ({
86
87
  ] }),
87
88
  /* @__PURE__ */ jsxs(NavItem, { className: "position-relative", ref: userRef, id: popoverUserId, "aria-haspopup": "true", "aria-expanded": isUserHovered, "data-testid": "header-user-menu-button", children: [
88
89
  /* @__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
- ] }) }) })
90
+ /* @__PURE__ */ jsx(Popover, { align: "end", className: "widget", id: popoverUserId, isVisible: isUserHovered, children: /* @__PURE__ */ jsxs(PopoverBody, { children: [
91
+ /* @__PURE__ */ jsxs("a", { href: "/timeline/customize?callback=" + encodeURIComponent(`${window.location.pathname}${window.location.search}`), className: "nav-link customize d-flex align-items-center gap-8", "data-testid": "header-customize-button", children: [
92
+ /* @__PURE__ */ jsx(SvgIconSetBackground, { className: "icon" }),
93
+ /* @__PURE__ */ jsx("span", { id: "cutomize-label", className: "nav-text", children: t("navbar.customize") })
94
+ ] }),
95
+ /* @__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: [
96
+ /* @__PURE__ */ jsx(SvgIconDisconnect, { className: "icon logout" }),
97
+ /* @__PURE__ */ jsx("span", { id: "logout-label", className: "nav-text", children: t("navbar.disconnect") })
98
+ ] })
99
+ ] }) })
93
100
  ] })
94
101
  ] })
95
102
  ] }) });
@@ -30,7 +30,7 @@ declare const HomeCard: {
30
30
  displayName: string;
31
31
  } & {
32
32
  Header: {
33
- ({ title, actionLabel, onActionClick, actionLeftIcon, actionRightIcon, className, ...rest }: HomeCardHeaderProps): import("react/jsx-runtime").JSX.Element;
33
+ ({ title, actionLabel, onActionClick, actionLeftIcon, actionRightIcon, actionProps, className, ...rest }: HomeCardHeaderProps): import("react/jsx-runtime").JSX.Element;
34
34
  displayName: string;
35
35
  };
36
36
  Content: {
@@ -1,4 +1,5 @@
1
1
  import { ComponentPropsWithoutRef, MouseEventHandler, ReactNode } from 'react';
2
+ import { ButtonBeta } from '../../../../components';
2
3
  export interface HomeCardHeaderProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {
3
4
  /** Title displayed on the left side of the header. */
4
5
  title: ReactNode;
@@ -10,9 +11,22 @@ export interface HomeCardHeaderProps extends Omit<ComponentPropsWithoutRef<'div'
10
11
  actionLeftIcon?: ReactNode;
11
12
  /** Optional right icon of the action button. */
12
13
  actionRightIcon?: ReactNode;
14
+ /**
15
+ * Extra props spread onto the action button (e.g. `data-testid`) — its
16
+ * default `data-testid` (`home-card-header-action`) isn't unique across
17
+ * the several `HomeCard`s a page can render, so consumers doing that
18
+ * should override it here. The `data-*` index signature covers
19
+ * attributes like `data-testid` that `ButtonBetaProps` doesn't declare:
20
+ * TypeScript's built-in allowance for undeclared `data-*`/`aria-*`
21
+ * attributes only applies to attributes written directly on a JSX
22
+ * element, not to a plain object literal passed as a prop value.
23
+ */
24
+ actionProps?: ComponentPropsWithoutRef<typeof ButtonBeta> & {
25
+ [key: `data-${string}`]: string;
26
+ };
13
27
  }
14
28
  declare const HomeCardHeader: {
15
- ({ title, actionLabel, onActionClick, actionLeftIcon, actionRightIcon, className, ...rest }: HomeCardHeaderProps): import("react/jsx-runtime").JSX.Element;
29
+ ({ title, actionLabel, onActionClick, actionLeftIcon, actionRightIcon, actionProps, className, ...rest }: HomeCardHeaderProps): import("react/jsx-runtime").JSX.Element;
16
30
  displayName: string;
17
31
  };
18
32
  export default HomeCardHeader;
@@ -8,13 +8,14 @@ const HomeCardHeader = ({
8
8
  onActionClick,
9
9
  actionLeftIcon,
10
10
  actionRightIcon,
11
+ actionProps,
11
12
  className,
12
13
  ...rest
13
14
  }) => {
14
15
  const hasAction = !!actionLabel && !!onActionClick;
15
16
  return /* @__PURE__ */ jsxs(Flex, { align: "center", justify: "between", gap: "8", className: clsx("home-card-header", className), ...rest, children: [
16
17
  /* @__PURE__ */ jsx("h3", { className: "home-card-header-title", children: title }),
17
- hasAction && /* @__PURE__ */ jsx(ButtonBeta, { color: "tertiary", size: "sm", variant: "ghost", onClick: onActionClick, leftIcon: actionLeftIcon, rightIcon: actionRightIcon, "data-testid": "home-card-header-action", children: actionLabel })
18
+ hasAction && /* @__PURE__ */ jsx(ButtonBeta, { color: "tertiary", size: "sm", variant: "ghost", onClick: onActionClick, leftIcon: actionLeftIcon, rightIcon: actionRightIcon, "data-testid": "home-card-header-action", ...actionProps, children: actionLabel })
18
19
  ] });
19
20
  };
20
21
  export {
@@ -1,12 +1,11 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import clsx from "clsx";
3
- import { useState } from "react";
3
+ import { useState, useRef, useMemo, useEffect } from "react";
4
4
  import { useTranslation } from "react-i18next";
5
5
  import SvgIconCheck from "../../../../icons/components/IconCheck.js";
6
6
  import { getAppCodeAndI18nKey } from "./notificationAdapter.js";
7
7
  import Modal from "../../../../../components/Modal/Modal.js";
8
8
  import Flex from "../../../../../components/Flex/Flex.js";
9
- import Checkbox from "../../../../../components/Checkbox/Checkbox.js";
10
9
  import AppIcon from "../../../../../components/AppIcon/AppIcon.js";
11
10
  import ButtonBeta from "../../../../../components/ButtonBeta/ButtonBeta.js";
12
11
  const NotificationFilterModal = ({
@@ -17,48 +16,59 @@ const NotificationFilterModal = ({
17
16
  onApply
18
17
  }) => {
19
18
  const {
20
- t
21
- } = useTranslation(), [selected, setSelected] = useState(appliedTypes), toggleType = (type) => {
19
+ t,
20
+ i18n
21
+ } = useTranslation(), [selected, setSelected] = useState(appliedTypes), refSelectAllCheckbox = useRef(null), allTypesSorted = useMemo(() => allTypes.map((type) => {
22
+ const [appCode, appI18nKey] = getAppCodeAndI18nKey(type), label = t(appI18nKey, {
23
+ defaultValue: appCode
24
+ });
25
+ return {
26
+ type,
27
+ appCode,
28
+ appI18nKey,
29
+ label
30
+ };
31
+ }).sort((a, b) => a.label.localeCompare(b.label, i18n.language, {
32
+ sensitivity: "base"
33
+ })), [allTypes, t, i18n.language]), toggleType = (type) => {
22
34
  setSelected((current) => current.includes(type) ? current.filter((value) => value !== type) : [...current, type]);
23
35
  }, toggleAll = () => {
24
36
  setSelected(selected.length === allTypes.length ? [] : allTypes);
25
37
  };
26
- return /* @__PURE__ */ jsxs(Modal, { id: "notification-filter-modal", size: "lg", scrollable: !0, isOpen, onModalClose: onCancel, children: [
27
- /* @__PURE__ */ jsx(Modal.Header, { onModalClose: onCancel, children: t("homepage.notifications.filter-modal.title", {
28
- defaultValue: "Filtrer les notifications"
29
- }) }),
30
- /* @__PURE__ */ jsx(Modal.Subtitle, { children: t("homepage.notifications.filter-modal.subtitle", {
31
- defaultValue: "Sélectionnez seulement les notifications importantes pour vous"
32
- }) }),
38
+ return useEffect(() => {
39
+ refSelectAllCheckbox.current && (refSelectAllCheckbox.current.indeterminate = selected.length > 0 && selected.length < allTypes.length);
40
+ }, [selected.length, allTypes.length]), /* @__PURE__ */ jsxs(Modal, { id: "notification-filter-modal", size: "lg", scrollable: !0, isOpen, onModalClose: onCancel, children: [
41
+ /* @__PURE__ */ jsx(Modal.Header, { onModalClose: onCancel, children: t("homepage.notifications.filter-modal.title") }),
42
+ /* @__PURE__ */ jsx(Modal.Subtitle, { children: t("homepage.notifications.filter-modal.subtitle") }),
33
43
  /* @__PURE__ */ jsxs(Modal.Body, { children: [
34
- /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "8", className: "mb-16", children: [
35
- /* @__PURE__ */ jsx("div", { className: "notification-filter-select-all", children: /* @__PURE__ */ jsx(Checkbox, { label: t("homepage.notifications.filter-modal.select-all", {
36
- defaultValue: "Tout sélectionner"
37
- }), checked: selected.length === allTypes.length, indeterminate: selected.length > 0 && selected.length < allTypes.length, onChange: toggleAll }) }),
44
+ /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "8", className: "mb-24", children: [
45
+ /* @__PURE__ */ jsxs("label", { className: "notification-filter-select-all notification-filter-chip", children: [
46
+ /* @__PURE__ */ jsx("span", { children: t("homepage.notifications.filter-modal.select-all") }),
47
+ /* @__PURE__ */ jsx("input", { type: "checkbox", ref: refSelectAllCheckbox, checked: selected.length === allTypes.length, className: "notification-filter-checkbox", onChange: toggleAll })
48
+ ] }),
38
49
  /* @__PURE__ */ jsx("span", { className: "notification-filter-count", children: t("homepage.notifications.filter-modal.count", {
39
50
  selected: selected.length,
40
- total: allTypes.length,
41
- defaultValue: "[[selected]] / [[total]] sélectionnées"
51
+ total: allTypes.length
42
52
  }) })
43
53
  ] }),
44
- /* @__PURE__ */ jsx(Flex, { wrap: "wrap", gap: "8", className: "notification-filter-options", children: allTypes.map((type) => {
45
- const [appCode, appI18nKey] = getAppCodeAndI18nKey(type), checked = selected.includes(type);
54
+ /* @__PURE__ */ jsx(Flex, { wrap: "wrap", gap: "16", className: "notification-filter-options", children: allTypesSorted.map(({
55
+ type,
56
+ label,
57
+ appCode
58
+ }) => {
59
+ const checked = selected.includes(type);
46
60
  return /* @__PURE__ */ jsxs("label", { className: clsx("notification-filter-chip", {
47
61
  "is-checked": checked
48
62
  }), children: [
49
63
  /* @__PURE__ */ jsx(AppIcon, { app: appCode, size: "24", iconFit: "contain" }),
50
- /* @__PURE__ */ jsx("span", { children: t(appI18nKey, {
51
- defaultValue: appCode
52
- }) }),
53
- /* @__PURE__ */ jsx("input", { type: "checkbox", className: "form-check-input", checked, onChange: () => toggleType(type) })
64
+ /* @__PURE__ */ jsx("span", { children: label }),
65
+ /* @__PURE__ */ jsx("input", { type: "checkbox", className: "notification-filter-checkbox", checked, onChange: () => toggleType(type) })
54
66
  ] }, type);
55
67
  }) })
56
68
  ] }),
57
69
  /* @__PURE__ */ jsxs(Modal.Footer, { children: [
58
70
  /* @__PURE__ */ jsx(ButtonBeta, { color: "tertiary", onClick: onCancel, type: "button", variant: "ghost", children: t("cancel") }),
59
- /* @__PURE__ */ jsx(ButtonBeta, { color: "default", onClick: () => onApply(selected), type: "button", variant: "filled", rightIcon: /* @__PURE__ */ jsx(SvgIconCheck, {}), children: t("homepage.notifications.filter-modal.confirm", {
60
- defaultValue: "Enregistrer"
61
- }) })
71
+ /* @__PURE__ */ jsx(ButtonBeta, { color: "default", onClick: () => onApply(selected), type: "button", variant: "filled", rightIcon: /* @__PURE__ */ jsx(SvgIconCheck, {}), children: t("homepage.notifications.filter-modal.confirm") })
62
72
  ] })
63
73
  ] });
64
74
  };
@@ -11,7 +11,7 @@ const ReportNotificationModal = ({
11
11
  const {
12
12
  t
13
13
  } = useTranslation();
14
- return /* @__PURE__ */ jsxs(Modal, { id: "report-notification-modal", size: "lg", isOpen, onModalClose: onCancel, children: [
14
+ return /* @__PURE__ */ jsxs(Modal, { id: "report-notification-modal", size: "sm", isOpen, onModalClose: onCancel, children: [
15
15
  /* @__PURE__ */ jsx(Modal.Header, { onModalClose: onCancel, children: t("homepage.notifications.report-modal.title", {
16
16
  defaultValue: "Signaler une notification"
17
17
  }) }),