@geowiki/cms 0.16.9-dev.9 → 0.16.10

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.
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import {
3
3
  ContainerWidget
4
- } from "./chunk-TARGC4JI.mjs";
5
- import "./chunk-KDNBFICK.mjs";
4
+ } from "./chunk-4OAXIZX5.mjs";
5
+ import "./chunk-EXWDSOSB.mjs";
6
6
  export {
7
7
  ContainerWidget
8
8
  };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  EntityListWidget
4
- } from "./chunk-4AG2CMM3.mjs";
4
+ } from "./chunk-PTPZAQH2.mjs";
5
5
  export {
6
6
  EntityListWidget
7
7
  };
@@ -12,7 +12,7 @@ import {
12
12
  } from "@geowiki/ui";
13
13
  import { jsx, jsxs } from "react/jsx-runtime";
14
14
  var MapWithNoSSR = dynamic(
15
- () => import("./HeroMap-ZRJTD7HM.mjs").then((x) => x.HeroMap),
15
+ () => import("./HeroMap-RMHVOY4J.mjs").then((x) => x.HeroMap),
16
16
  {
17
17
  ssr: false
18
18
  }
@@ -32,12 +32,9 @@ var createClusterIcon = (color) => {
32
32
  };
33
33
  markers.forEach((marker) => {
34
34
  const status = marker.feature?.properties?.Status?.trim().toLowerCase() || "default";
35
- if (status === "ongoing")
36
- statusCount.ongoing++;
37
- else if (status === "auxiliary")
38
- statusCount.auxiliary++;
39
- else
40
- statusCount.default++;
35
+ if (status === "ongoing") statusCount.ongoing++;
36
+ else if (status === "auxiliary") statusCount.auxiliary++;
37
+ else statusCount.default++;
41
38
  });
42
39
  return divIcon({
43
40
  html: `<div style=
@@ -63,10 +60,8 @@ var ClusterMarkers = (_props) => {
63
60
  const { data: ConfigSettings, isLoading: IsConfigSettingsLoaded } = useConfigSettings();
64
61
  const { data, error, isLoading } = useClusterMapInfo();
65
62
  const fileUrl = useFileUrl();
66
- if (error)
67
- return null;
68
- if (isLoading || IsConfigSettingsLoaded)
69
- return /* @__PURE__ */ jsx(LoaderFull, {});
63
+ if (error) return null;
64
+ if (isLoading || IsConfigSettingsLoaded) return /* @__PURE__ */ jsx(LoaderFull, {});
70
65
  if (ConfigSettings?.ConfigSettings?.FeaturesFarmerCluster?.Text) {
71
66
  return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(MarkerClusterGroup, { iconCreateFunction: createClusterIcon("#9999CC"), children: data?.map((cluster) => /* @__PURE__ */ jsx(
72
67
  Marker,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Sections
3
- } from "./chunk-KDNBFICK.mjs";
3
+ } from "./chunk-EXWDSOSB.mjs";
4
4
 
5
5
  // src/components/Section/Recodo/LanguagesWidget.tsx
6
6
  import { useCmsContentWithType, useDefaultSettings } from "@geowiki/core";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  MapHeroWidget
4
- } from "./chunk-MY5WRHNH.mjs";
4
+ } from "./chunk-ZX5FKJYJ.mjs";
5
5
  export {
6
6
  MapHeroWidget
7
7
  };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  NewsLetterWidget
4
- } from "./chunk-DVN7SXOC.mjs";
4
+ } from "./chunk-3S7WDLML.mjs";
5
5
  export {
6
6
  NewsLetterWidget
7
7
  };
@@ -104,8 +104,7 @@ var QuestMapClient = () => {
104
104
  }
105
105
  };
106
106
  }, [isLoading]);
107
- if (isLoading)
108
- return /* @__PURE__ */ jsx(LoaderFull, {});
107
+ if (isLoading) return /* @__PURE__ */ jsx(LoaderFull, {});
109
108
  return /* @__PURE__ */ jsx("div", { className: "w-full rounded-2xl overflow-hidden shadow bg-white", children: /* @__PURE__ */ jsx(
110
109
  "div",
111
110
  {
@@ -2,7 +2,7 @@
2
2
  import { dynamic } from "@geowiki/core";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  var QuestMapClient = dynamic(
5
- () => import("./QuestMapClient-B6LGGSGT.mjs").then((mod) => mod.QuestMapClient),
5
+ () => import("./QuestMapClient-5IEELSN6.mjs").then((mod) => mod.QuestMapClient),
6
6
  {
7
7
  ssr: false
8
8
  }
@@ -15,7 +15,7 @@ var SubtitleH3BodyInternalLinkListWidget = ({
15
15
  {
16
16
  title: data.TitlePart.Title,
17
17
  subtitle: data.SubtitleH3BodyInternalLinkList.Subtitle?.Text,
18
- textBody: data.SubtitleH3BodyInternalLinkList.Content?.Html,
18
+ textBody: data.SubtitleH3BodyInternalLinkList.Content?.Html ?? data.SubtitleH3BodyInternalLinkList.TextBody?.Text,
19
19
  links
20
20
  }
21
21
  ) });
@@ -1,20 +1,18 @@
1
1
  // src/components/Section/NewsLetterWidget.tsx
2
2
  import { OldButton } from "@geowiki/ui";
3
3
  import { useState } from "react";
4
- import { MailChimpService } from "@geowiki/api-proxy";
5
- import { settingsStore } from "@geowiki/core";
4
+ import { OpenAPI } from "@geowiki/api-proxy";
6
5
  import { useToast } from "@geowiki/ui";
7
6
  import { jsx, jsxs } from "react/jsx-runtime";
8
7
  var NewsLetterWidget = ({ data }) => {
9
8
  const { toast } = useToast();
10
- var brandName = settingsStore.getState().settings?.generalSettings.GeoWikiSettings?.BrandName?.Text;
11
9
  const [loading, setLoading] = useState(false);
12
10
  const [isAccepted, setIsAccepted] = useState(false);
13
11
  const [email, setEmail] = useState("");
14
12
  const isEmailValid = (email2) => {
15
13
  return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email2);
16
14
  };
17
- const subscribe = () => {
15
+ const subscribe = async () => {
18
16
  if (!isAccepted) {
19
17
  toast({
20
18
  title: "You must accept the privacy policy",
@@ -23,46 +21,45 @@ var NewsLetterWidget = ({ data }) => {
23
21
  return;
24
22
  }
25
23
  if (!email || email.length === 0) {
26
- toast({
27
- title: "You must enter an email",
28
- variant: "destructive"
29
- });
24
+ toast({ title: "You must enter an email", variant: "destructive" });
30
25
  return;
31
26
  }
32
27
  if (!isEmailValid(email)) {
33
- toast({
34
- title: "Invalid email",
35
- variant: "destructive"
36
- });
28
+ toast({ title: "Invalid email", variant: "destructive" });
37
29
  return;
38
30
  }
39
- var listId = data.NewsLetter?.MailChimpListId?.Text;
40
- if (!brandName) {
41
- brandName = window.location.hostname;
42
- }
43
- var subscribeInput = {
44
- email_address: email,
45
- list_id: listId,
46
- tags: [brandName]
47
- };
48
31
  setLoading(true);
49
- MailChimpService.mailChimpGetIsMember(listId, email).then((res) => {
50
- if (res) {
51
- toast({
52
- title: "You are already subscribed",
53
- variant: "default"
54
- });
55
- setLoading(false);
56
- } else {
57
- MailChimpService.mailChimpSubscribe(subscribeInput).then(() => {
58
- setLoading(false);
59
- toast({
60
- title: "Subscribed successfully",
61
- variant: "default"
62
- });
63
- });
32
+ try {
33
+ const res = await fetch(`${OpenAPI.BASE}/api/newsletter/subscribe`, {
34
+ method: "POST",
35
+ headers: { "Content-Type": "application/json" },
36
+ body: JSON.stringify({ email })
37
+ });
38
+ if (!res.ok) {
39
+ let message = "Subscription failed. Please try again later.";
40
+ try {
41
+ const body = await res.json();
42
+ message = body?.error?.message ?? message;
43
+ } catch {
44
+ }
45
+ toast({ title: message, variant: "destructive" });
46
+ return;
64
47
  }
65
- });
48
+ const result = await res.json();
49
+ toast({
50
+ title: result?.requiresConfirmation ? "Almost there \u2014 please check your inbox to confirm your subscription." : "Subscribed successfully",
51
+ variant: "default"
52
+ });
53
+ setEmail("");
54
+ setIsAccepted(false);
55
+ } catch {
56
+ toast({
57
+ title: "Subscription failed. Please try again later.",
58
+ variant: "destructive"
59
+ });
60
+ } finally {
61
+ setLoading(false);
62
+ }
66
63
  };
67
64
  return /* @__PURE__ */ jsx("div", { className: "border rounded-xl", children: /* @__PURE__ */ jsxs("div", { className: "container mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8 lg:flex lg:items-center", children: [
68
65
  /* @__PURE__ */ jsxs("div", { className: "lg:w-0 lg:flex-1", children: [
@@ -84,6 +81,7 @@ var NewsLetterWidget = ({ data }) => {
84
81
  className: "mt-1 bg-gray-100 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm",
85
82
  type: "email",
86
83
  name: "email",
84
+ value: email,
87
85
  onChange: (e) => setEmail(e.target.value),
88
86
  placeholder: data.emailPlaceholder
89
87
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Sections
3
- } from "./chunk-KDNBFICK.mjs";
3
+ } from "./chunk-EXWDSOSB.mjs";
4
4
 
5
5
  // src/components/Section/ContainerWidget.tsx
6
6
  import { jsx } from "react/jsx-runtime";
@@ -1,3 +1,29 @@
1
+ // src/components/WidgetErrorBoundary.tsx
2
+ import { ErrorBoundary } from "react-error-boundary";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ var IS_DEV = process.env.NODE_ENV === "development";
5
+ var WidgetFallback = ({ widgetName, error }) => {
6
+ if (!IS_DEV) return null;
7
+ return /* @__PURE__ */ jsxs("div", { className: "container mx-auto my-4 p-3 border border-dashed border-red-400 bg-red-50 text-red-700 text-sm rounded", children: [
8
+ /* @__PURE__ */ jsx("strong", { children: "Widget failed to render" }),
9
+ " \u2014 ",
10
+ widgetName,
11
+ /* @__PURE__ */ jsx("pre", { className: "mt-2 text-xs whitespace-pre-wrap", children: error.message })
12
+ ] });
13
+ };
14
+ var WidgetErrorBoundary = ({ children, widgetName }) => /* @__PURE__ */ jsx(
15
+ ErrorBoundary,
16
+ {
17
+ fallbackRender: ({ error }) => /* @__PURE__ */ jsx(WidgetFallback, { widgetName, error }),
18
+ onError: (error, info) => console.error(
19
+ `[WidgetErrorBoundary] Widget "${widgetName}" crashed:`,
20
+ error,
21
+ info
22
+ ),
23
+ children
24
+ }
25
+ );
26
+
1
27
  // src/components/SectionComponents.ts
2
28
  import { dynamic } from "@geowiki/core";
3
29
  var NewsFeedWidget = dynamic(() => import("./NewsFeedWidget-BQTZYA6U.mjs"));
@@ -31,7 +57,7 @@ var FarmerClusterFinderWidget = dynamic(
31
57
  )
32
58
  );
33
59
  var EntityListWidget = dynamic(
34
- () => import("./EntityListWidget-JC6UCIP5.mjs").then((mod) => mod.EntityListWidget)
60
+ () => import("./EntityListWidget-6N4AXYWX.mjs").then((mod) => mod.EntityListWidget)
35
61
  );
36
62
  var SpecialFeaturesWidget = dynamic(
37
63
  () => import("./SpecialFeaturesWidget-ZWILQPVB.mjs").then(
@@ -85,13 +111,13 @@ var RowWidget = dynamic(
85
111
  () => import("./RowWidget-VSVZUIYH.mjs").then((mod) => mod.RowWidget)
86
112
  );
87
113
  var NewsLetterWidget = dynamic(
88
- () => import("./NewsLetterWidget-PMR355EB.mjs").then((mod) => mod.NewsLetterWidget)
114
+ () => import("./NewsLetterWidget-QT57OV3F.mjs").then((mod) => mod.NewsLetterWidget)
89
115
  );
90
116
  var StatsWidget = dynamic(
91
117
  () => import("./StatsWidget-4MISF6XB.mjs").then((mod) => mod.StatsWidget)
92
118
  );
93
119
  var MapHeroWidget = dynamic(
94
- () => import("./MapHeroWidget-ZNXXQOW6.mjs").then((mod) => mod.MapHeroWidget)
120
+ () => import("./MapHeroWidget-I5SP4J5M.mjs").then((mod) => mod.MapHeroWidget)
95
121
  );
96
122
  var HeroCenterTextWidget = dynamic(
97
123
  () => import("./HeroCenterTextWidget-5LDZNUBR.mjs").then(
@@ -105,7 +131,7 @@ var MarkdownWidget = dynamic(
105
131
  () => import("./MarkdownWidget-QTTNNVQW.mjs").then((mod) => mod.MarkdownWidget)
106
132
  );
107
133
  var ContainerWidget = dynamic(
108
- () => import("./ContainerWidget-U6P5FFUM.mjs").then((mod) => mod.ContainerWidget)
134
+ () => import("./ContainerWidget-RNOQK7CT.mjs").then((mod) => mod.ContainerWidget)
109
135
  );
110
136
  var HeroWidget = dynamic(
111
137
  () => import("./HeroWidget-A4ODJCXZ.mjs").then((mod) => mod.HeroWidget)
@@ -129,7 +155,7 @@ var SubtitleH3BodyWidget = dynamic(
129
155
  )
130
156
  );
131
157
  var SubtitleH3BodyInternalLinkListWidget = dynamic(
132
- () => import("./SubtitleH3BodyInternalLinkListWidget-KFP3TIKE.mjs").then(
158
+ () => import("./SubtitleH3BodyInternalLinkListWidget-CWKRJY4Z.mjs").then(
133
159
  (mod) => mod.SubtitleH3BodyInternalLinkListWidget
134
160
  )
135
161
  );
@@ -163,7 +189,7 @@ var SubtitleH3BodySpecialFeatureResourceCollectionsWidget = dynamic(
163
189
  () => import("./SubtitleH3BodySpecialFeatureResourceCollectionsWidget-62SJ4J73.mjs").then((mod) => mod.SubtitleH3BodySpecialFeatureResourceCollectionsWidget)
164
190
  );
165
191
  var H2BodyInternalLinkMapWidget = dynamic(
166
- () => import("./H2BodyInternalLinkMapWidget-75XPTZ6G.mjs").then(
192
+ () => import("./H2BodyInternalLinkMapWidget-6VQYSAGG.mjs").then(
167
193
  (mod) => mod.H2BodyInternalLinkMapWidget
168
194
  )
169
195
  );
@@ -179,7 +205,7 @@ var HeaderBodyWidget = dynamic(
179
205
  () => import("./HeaderBodyWidget-ZW2WYKNP.mjs").then((mod) => mod.HeaderBodyWidget)
180
206
  );
181
207
  var LanguageWidget = dynamic(
182
- () => import("./LanguagesWidget-BBKTIGLB.mjs").then((mod) => mod.LanguageWidget)
208
+ () => import("./LanguagesWidget-DGVAZAXK.mjs").then((mod) => mod.LanguageWidget)
183
209
  );
184
210
  var SubtitleH3KeyResourcesWidget = dynamic(
185
211
  () => import("./SubtitleH3KeyResourcesWidget-AGBBJ7ZJ.mjs").then(
@@ -218,7 +244,7 @@ var DownloadQuestWidget = dynamic(
218
244
  )
219
245
  );
220
246
  var QuestMapWidget = dynamic(
221
- () => import("./QuestMapWidget-OOAW42KH.mjs").then((mod) => mod.QuestMapWidget)
247
+ () => import("./QuestMapWidget-5234C7VP.mjs").then((mod) => mod.QuestMapWidget)
222
248
  );
223
249
  var SelectQuestWidget = dynamic(
224
250
  () => import("./SelectQuestWidget-YGZ5TFLV.mjs").then(
@@ -288,13 +314,13 @@ var SectionComponents = {
288
314
  };
289
315
 
290
316
  // src/components/Sections.tsx
291
- import { jsx } from "react/jsx-runtime";
317
+ import { jsx as jsx2 } from "react/jsx-runtime";
292
318
  var Section = ({ sectionData, settings, cmsUrl, newsItems }) => {
293
319
  const SectionComponent = SectionComponents[sectionData.ContentType];
294
320
  if (!SectionComponent) {
295
321
  return null;
296
322
  }
297
- return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
323
+ return /* @__PURE__ */ jsx2(WidgetErrorBoundary, { widgetName: sectionData.ContentType, children: /* @__PURE__ */ jsx2(
298
324
  SectionComponent,
299
325
  {
300
326
  data: sectionData,
@@ -302,10 +328,10 @@ var Section = ({ sectionData, settings, cmsUrl, newsItems }) => {
302
328
  cmsUrl,
303
329
  newsItems
304
330
  }
305
- ) }, sectionData.ContentItemId);
331
+ ) });
306
332
  };
307
333
  var Sections = ({ sections, settings, cmsUrl }) => {
308
- return /* @__PURE__ */ jsx("div", { className: "flex flex-col", children: sections?.map((section) => /* @__PURE__ */ jsx(
334
+ return /* @__PURE__ */ jsx2("div", { className: "flex flex-col", children: sections?.map((section) => /* @__PURE__ */ jsx2(
309
335
  Section,
310
336
  {
311
337
  sectionData: section,
@@ -317,5 +343,6 @@ var Sections = ({ sections, settings, cmsUrl }) => {
317
343
  };
318
344
 
319
345
  export {
346
+ WidgetErrorBoundary,
320
347
  Sections
321
348
  };
@@ -16,8 +16,7 @@ var EntityListWidget = ({ data }) => {
16
16
  Skip * NumberOfEntity,
17
17
  NumberOfEntity
18
18
  );
19
- if (isLoading)
20
- return /* @__PURE__ */ jsx(LoaderFull, {});
19
+ if (isLoading) return /* @__PURE__ */ jsx(LoaderFull, {});
21
20
  if (!isLoading && clusterNews?.totalCount == 0)
22
21
  return /* @__PURE__ */ jsx("span", { className: "flex items-center justify-center m-10", children: "No News" });
23
22
  else
@@ -3,7 +3,7 @@ import { dynamic } from "@geowiki/core";
3
3
  import { useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  var MapWithNoSSR = dynamic(
6
- () => import("./HeroMap-ZRJTD7HM.mjs").then((x) => x.HeroMap),
6
+ () => import("./HeroMap-RMHVOY4J.mjs").then((x) => x.HeroMap),
7
7
  {
8
8
  ssr: false
9
9
  }
package/dist/index.d.mts CHANGED
@@ -1,14 +1,21 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { BaseProp } from '@geowiki/core';
3
+ import { ReactNode } from 'react';
3
4
  import { ApplicationItemDto, HeaderItemDto, MapHeroWidgetItemDto, CardGridItemDto, CardItemDto, ColumnItemDto, ContactItemDto, EntityListItemDto, FeatureRowItemDto, FeatureRowWithImageItemDto, FeatureRowWithMultipleImagesItemDto, GalleryItemDto, HeroCenterTextItemDto, HeroItemDto, ImageItemDto, MarkdownWidgetItemDto, NewsLetterItemDto, ResourceCollectionItemItemDto, ResourceCollectionsItemDto, RowItemDto, SimpleActionListItemDto, SimpleCenteredCallToActionItemDto, SpecialFeaturesItemDto, StatsItemDto, TestimonialListItemDto } from '@geowiki/cms-proxy';
4
5
  export * from '@geowiki/core/src/hooks/useMapMenuItems';
5
6
 
6
- interface Props$3 extends BaseProp {
7
+ interface Props$4 extends BaseProp {
7
8
  sections: any;
8
9
  cmsUrl: string;
9
10
  newsItems?: any;
10
11
  }
11
- declare const Sections: ({ sections, settings, cmsUrl }: Props$3) => react_jsx_runtime.JSX.Element;
12
+ declare const Sections: ({ sections, settings, cmsUrl }: Props$4) => react_jsx_runtime.JSX.Element;
13
+
14
+ interface Props$3 {
15
+ children: ReactNode;
16
+ widgetName: string;
17
+ }
18
+ declare const WidgetErrorBoundary: ({ children, widgetName }: Props$3) => react_jsx_runtime.JSX.Element;
12
19
 
13
20
  interface AppsListProps {
14
21
  apps: ApplicationItemDto[];
@@ -182,4 +189,4 @@ declare const UserInfoWidget: (_props: UserInfoWidgetProps) => react_jsx_runtime
182
189
 
183
190
  declare const ClusterNewsStories: ({}: {}) => react_jsx_runtime.JSX.Element;
184
191
 
185
- export { AppsList, CardGridWidget, CardWidget, ClusterNewsStories, ColumnWidget, ContactWidget, ContainerWidget, EntityListWidget, FarmerClusterFinderWidget, FeatureColumnsGroup, FeatureRowWidget, FeatureRowWithImageWidget, FeatureRowWithMultipleImagesWidget, GalleryWidget, HeaderWidget, HeadingTextWidget, type HeadingTextWidgetProps, HeroCenterTextWidget, HeroGeoWiki, HeroWidget, HtmlSection, ImageWidget, LargeVideo, MapHeroWidget, MarkdownWidget, NewsLetterWidget, ResourceCollectionItemWidget, ResourceCollectionsWidget, RichText, RowWidget, Sections, SimpleActionListWidget, SimpleCallToActionWidget, SpecialFeaturesWidget, StatsWidget, TestimonialListWidget, UnderConstruction, UpdateUserInfoWidget, UserInfoWidget };
192
+ export { AppsList, CardGridWidget, CardWidget, ClusterNewsStories, ColumnWidget, ContactWidget, ContainerWidget, EntityListWidget, FarmerClusterFinderWidget, FeatureColumnsGroup, FeatureRowWidget, FeatureRowWithImageWidget, FeatureRowWithMultipleImagesWidget, GalleryWidget, HeaderWidget, HeadingTextWidget, type HeadingTextWidgetProps, HeroCenterTextWidget, HeroGeoWiki, HeroWidget, HtmlSection, ImageWidget, LargeVideo, MapHeroWidget, MarkdownWidget, NewsLetterWidget, ResourceCollectionItemWidget, ResourceCollectionsWidget, RichText, RowWidget, Sections, SimpleActionListWidget, SimpleCallToActionWidget, SpecialFeaturesWidget, StatsWidget, TestimonialListWidget, UnderConstruction, UpdateUserInfoWidget, UserInfoWidget, WidgetErrorBoundary };
package/dist/index.d.ts CHANGED
@@ -1,14 +1,21 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { BaseProp } from '@geowiki/core';
3
+ import { ReactNode } from 'react';
3
4
  import { ApplicationItemDto, HeaderItemDto, MapHeroWidgetItemDto, CardGridItemDto, CardItemDto, ColumnItemDto, ContactItemDto, EntityListItemDto, FeatureRowItemDto, FeatureRowWithImageItemDto, FeatureRowWithMultipleImagesItemDto, GalleryItemDto, HeroCenterTextItemDto, HeroItemDto, ImageItemDto, MarkdownWidgetItemDto, NewsLetterItemDto, ResourceCollectionItemItemDto, ResourceCollectionsItemDto, RowItemDto, SimpleActionListItemDto, SimpleCenteredCallToActionItemDto, SpecialFeaturesItemDto, StatsItemDto, TestimonialListItemDto } from '@geowiki/cms-proxy';
4
5
  export * from '@geowiki/core/src/hooks/useMapMenuItems';
5
6
 
6
- interface Props$3 extends BaseProp {
7
+ interface Props$4 extends BaseProp {
7
8
  sections: any;
8
9
  cmsUrl: string;
9
10
  newsItems?: any;
10
11
  }
11
- declare const Sections: ({ sections, settings, cmsUrl }: Props$3) => react_jsx_runtime.JSX.Element;
12
+ declare const Sections: ({ sections, settings, cmsUrl }: Props$4) => react_jsx_runtime.JSX.Element;
13
+
14
+ interface Props$3 {
15
+ children: ReactNode;
16
+ widgetName: string;
17
+ }
18
+ declare const WidgetErrorBoundary: ({ children, widgetName }: Props$3) => react_jsx_runtime.JSX.Element;
12
19
 
13
20
  interface AppsListProps {
14
21
  apps: ApplicationItemDto[];
@@ -182,4 +189,4 @@ declare const UserInfoWidget: (_props: UserInfoWidgetProps) => react_jsx_runtime
182
189
 
183
190
  declare const ClusterNewsStories: ({}: {}) => react_jsx_runtime.JSX.Element;
184
191
 
185
- export { AppsList, CardGridWidget, CardWidget, ClusterNewsStories, ColumnWidget, ContactWidget, ContainerWidget, EntityListWidget, FarmerClusterFinderWidget, FeatureColumnsGroup, FeatureRowWidget, FeatureRowWithImageWidget, FeatureRowWithMultipleImagesWidget, GalleryWidget, HeaderWidget, HeadingTextWidget, type HeadingTextWidgetProps, HeroCenterTextWidget, HeroGeoWiki, HeroWidget, HtmlSection, ImageWidget, LargeVideo, MapHeroWidget, MarkdownWidget, NewsLetterWidget, ResourceCollectionItemWidget, ResourceCollectionsWidget, RichText, RowWidget, Sections, SimpleActionListWidget, SimpleCallToActionWidget, SpecialFeaturesWidget, StatsWidget, TestimonialListWidget, UnderConstruction, UpdateUserInfoWidget, UserInfoWidget };
192
+ export { AppsList, CardGridWidget, CardWidget, ClusterNewsStories, ColumnWidget, ContactWidget, ContainerWidget, EntityListWidget, FarmerClusterFinderWidget, FeatureColumnsGroup, FeatureRowWidget, FeatureRowWithImageWidget, FeatureRowWithMultipleImagesWidget, GalleryWidget, HeaderWidget, HeadingTextWidget, type HeadingTextWidgetProps, HeroCenterTextWidget, HeroGeoWiki, HeroWidget, HtmlSection, ImageWidget, LargeVideo, MapHeroWidget, MarkdownWidget, NewsLetterWidget, ResourceCollectionItemWidget, ResourceCollectionsWidget, RichText, RowWidget, Sections, SimpleActionListWidget, SimpleCallToActionWidget, SpecialFeaturesWidget, StatsWidget, TestimonialListWidget, UnderConstruction, UpdateUserInfoWidget, UserInfoWidget, WidgetErrorBoundary };