datastake-daf 0.6.147 → 0.6.149

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 (134) hide show
  1. package/.vscode/settings.json +13 -0
  2. package/dist/components/index.css +1 -1
  3. package/dist/components/index.js +482 -205
  4. package/dist/utils/index.js +22 -5
  5. package/package.json +1 -1
  6. package/public/assets/images/SVG/403.svg +20 -0
  7. package/public/assets/images/SVG/404.svg +11 -0
  8. package/public/assets/images/SVG/CADD.svg +27 -0
  9. package/public/assets/images/SVG/InDevelopment.svg +24 -0
  10. package/public/assets/images/SVG/PME.svg +21 -0
  11. package/public/assets/images/SVG/comment-alt.svg +3 -0
  12. package/public/assets/images/SVG/comment.svg +3 -0
  13. package/public/assets/images/SVG/coordinator.svg +3 -0
  14. package/public/assets/images/SVG/implementer.svg +3 -0
  15. package/public/assets/images/SVG/logo-horizontal.svg +1 -0
  16. package/public/assets/images/SVG/partner-building.svg +3 -0
  17. package/public/assets/images/SVG/partner.svg +5 -0
  18. package/public/assets/images/SVG/unavailable-info.svg +16 -0
  19. package/public/assets/images/SVG/vault.svg +6 -0
  20. package/public/assets/images/app-navigation/mmt-logo.svg +32 -0
  21. package/public/assets/images/app-navigation/tazama-logo.svg +31 -0
  22. package/public/assets/images/app-navigation/tif-logo.svg +33 -0
  23. package/public/assets/images/applications/arm-prev.png +0 -0
  24. package/public/assets/images/applications/asm-icon.svg +29 -0
  25. package/public/assets/images/applications/kota-logo.svg +4 -0
  26. package/public/assets/images/applications/mmt-logo-2.svg +5 -0
  27. package/public/assets/images/applications/mmt-logo.svg +6 -0
  28. package/public/assets/images/applications/mmt-prev.png +0 -0
  29. package/public/assets/images/applications/sbgi_logo.png +0 -0
  30. package/public/assets/images/applications/tazama-home-img.jpeg +0 -0
  31. package/public/assets/images/applications/tazama-logo.svg +9 -0
  32. package/public/assets/images/applications/tif-app.png +0 -0
  33. package/public/assets/images/applications/tif-logo.svg +9 -0
  34. package/public/assets/images/auth-bg-2.svg +296 -0
  35. package/public/assets/images/auth-bg.svg +303 -0
  36. package/public/assets/images/countries/fr.png +0 -0
  37. package/public/assets/images/countries/gb.png +0 -0
  38. package/public/assets/images/countries/sp.png +0 -0
  39. package/public/assets/images/dashboard/amp-dashboard/empty.png +0 -0
  40. package/public/assets/images/dashboard/map-icons/amp.svg +28 -0
  41. package/public/assets/images/dashboard/map-icons/amp_focused.svg +28 -0
  42. package/public/assets/images/dashboard/map-icons/amp_location_pin.svg +4 -0
  43. package/public/assets/images/dashboard/map-icons/datachain-icon.svg +21 -0
  44. package/public/assets/images/dashboard/map-icons/ellipse.svg +3 -0
  45. package/public/assets/images/dashboard/map-icons/lir-icon.svg +3 -0
  46. package/public/assets/images/dashboard/map-icons/major-incident-events-icon.svg +3 -0
  47. package/public/assets/images/dashboard/map-icons/minesites-location-icon.svg +21 -0
  48. package/public/assets/images/dashboard/map-icons/minor-incident-events-icon.svg +3 -0
  49. package/public/assets/images/dashboard/map-icons/moderate-incident-events-icon.svg +3 -0
  50. package/public/assets/images/dashboard/map-icons/other-events-icon.svg +3 -0
  51. package/public/assets/images/dashboard/map-icons/other-location-icon.svg +21 -0
  52. package/public/assets/images/dashboard/map-icons/risk-mitigation-events-icon.svg +3 -0
  53. package/public/assets/images/dashboard/map-icons/sca_location_pin.svg +4 -0
  54. package/public/assets/images/dashboard/map-icons/villages-location-icon.svg +21 -0
  55. package/public/assets/images/dashboard/mine-site.svg +7 -0
  56. package/public/assets/images/dashboard/programs/key-data.svg +12 -0
  57. package/public/assets/images/dashboard/programs/key-projects.svg +12 -0
  58. package/public/assets/images/dashboard/scl-icons/close-icon.svg +4 -0
  59. package/public/assets/images/dashboard/scl-icons/dot.svg +3 -0
  60. package/public/assets/images/dashboard/scl-icons/empty-gallery.svg +5 -0
  61. package/public/assets/images/dashboard/scl-icons/location-icon.svg +14 -0
  62. package/public/assets/images/dashboard/scl-icons/town-dot.svg +3 -0
  63. package/public/assets/images/dashboard/scl-icons/town-icon.svg +4 -0
  64. package/public/assets/images/dashboard/scl-icons/village-icon.svg +6 -0
  65. package/public/assets/images/dashboard/tif-products/cobalt-bg.png +0 -0
  66. package/public/assets/images/dashboard/tif-products/cobalt-logo.png +0 -0
  67. package/public/assets/images/dashboard/tif-products/gold-bg.png +0 -0
  68. package/public/assets/images/dashboard/tif-products/gold-logo.png +0 -0
  69. package/public/assets/images/datastake-logo.svg +20 -0
  70. package/public/assets/images/datastake-white.svg +20 -0
  71. package/public/assets/images/empty-box.svg +5 -0
  72. package/public/assets/images/find-information/business-entity.svg +4 -0
  73. package/public/assets/images/find-information/civil-society.svg +4 -0
  74. package/public/assets/images/find-information/government.svg +4 -0
  75. package/public/assets/images/find-information/graphs.png +0 -0
  76. package/public/assets/images/find-information/individual.svg +11 -0
  77. package/public/assets/images/find-information/non-stated-arm-group.svg +4 -0
  78. package/public/assets/images/find-information/other-organisation.svg +4 -0
  79. package/public/assets/images/find-information/state-security.svg +4 -0
  80. package/public/assets/images/info-channels/investor.svg +4 -0
  81. package/public/assets/images/info-channels/mine.svg +4 -0
  82. package/public/assets/images/info-channels/source.png +0 -0
  83. package/public/assets/images/kota-bg.jpg +0 -0
  84. package/public/assets/images/kota-logo-small.svg +2 -0
  85. package/public/assets/images/kota-logo.svg +2 -0
  86. package/public/assets/images/logo-new-white-icon.svg +5 -0
  87. package/public/assets/images/logo-new-white.svg +8 -0
  88. package/public/assets/images/logo-white.svg +67 -0
  89. package/public/assets/images/map/assessed.png +0 -0
  90. package/public/assets/images/map/connected.png +0 -0
  91. package/public/assets/images/map/disabled.png +0 -0
  92. package/public/assets/images/map/identified.png +0 -0
  93. package/public/assets/images/map/position.png +0 -0
  94. package/public/assets/images/map/treasure-map.png +0 -0
  95. package/public/assets/images/project-share-info/due-dilligence.svg +3 -0
  96. package/public/assets/images/project-share-info/event.svg +3 -0
  97. package/public/assets/images/project-share-info/location.svg +3 -0
  98. package/public/assets/images/project-share-info/network.svg +3 -0
  99. package/public/assets/images/project-share-info/stakeholder.svg +10 -0
  100. package/public/assets/images/tif/antelope-mine-people.png +0 -0
  101. package/public/assets/images/tif/gesagu-people.png +0 -0
  102. package/public/assets/images/tif/ironstep-people.png +0 -0
  103. package/public/assets/images/tif-bg.png +0 -0
  104. package/public/assets/images/tif-logo-small.svg +3 -0
  105. package/public/assets/images/tif-logo.svg +9 -0
  106. package/public/assets/images/verified-user-tif.png +0 -0
  107. package/public/assets/images/verified-user.svg +100 -0
  108. package/public/favicons/android-chrome-192x192.png +0 -0
  109. package/public/favicons/android-chrome-512x512.png +0 -0
  110. package/public/favicons/apple-touch-icon.png +0 -0
  111. package/public/favicons/favicon-16x16.png +0 -0
  112. package/public/favicons/favicon-32x32.png +0 -0
  113. package/public/favicons/favicon.ico +0 -0
  114. package/public/favicons/tazama/android-chrome-192x192.png +0 -0
  115. package/public/favicons/tazama/android-chrome-512x512.png +0 -0
  116. package/public/favicons/tazama/apple-touch-icon.png +0 -0
  117. package/public/favicons/tazama/favicon-16x16.png +0 -0
  118. package/public/favicons/tazama/favicon-32x32.png +0 -0
  119. package/public/favicons/tazama/favicon.ico +0 -0
  120. package/src/@daf/core/components/Dashboard/Globe/hook.js +1 -106
  121. package/src/@daf/core/components/Dashboard/Globe/index.jsx +1 -13
  122. package/src/@daf/core/components/Dashboard/Globe/style.js +0 -11
  123. package/src/@daf/core/components/Dashboard/Widget/KeyIndicators/index.jsx +4 -3
  124. package/src/@daf/core/components/Dashboard/Widget/ProjectWidget/ProjectWidget.stories.jsx +72 -0
  125. package/src/@daf/core/components/Dashboard/Widget/ProjectWidget/index.jsx +90 -0
  126. package/src/@daf/core/components/Dashboard/Widget/ProjectWidget/style.js +74 -0
  127. package/src/@daf/core/components/Dashboard/Widget/SDGWidget/SDGWidget.stories.jsx +33 -17
  128. package/src/@daf/core/components/Dashboard/Widget/SDGWidget/config.js +4 -22
  129. package/src/@daf/core/components/Dashboard/Widget/SDGWidget/index.jsx +3 -3
  130. package/src/@daf/core/components/Dashboard/Widget/index.jsx +95 -82
  131. package/src/@daf/core/components/ProgressTabs/_index.scss +1 -11
  132. package/src/constants/SDGs.js +92 -0
  133. package/src/constants/locales/en/translation.js +1357 -1269
  134. package/src/index.js +11 -6
@@ -3065,7 +3065,7 @@ const config$3 = {
3065
3065
  Integration: config$4
3066
3066
  };
3067
3067
 
3068
- const _excluded$r = ["width", "height", "size", "name", "fill"];
3068
+ const _excluded$q = ["width", "height", "size", "name", "fill"];
3069
3069
  const CustomIcon = _ref => {
3070
3070
  let {
3071
3071
  width = 14,
@@ -3074,7 +3074,7 @@ const CustomIcon = _ref => {
3074
3074
  name = "",
3075
3075
  fill = "none"
3076
3076
  } = _ref,
3077
- props = _objectWithoutProperties(_ref, _excluded$r);
3077
+ props = _objectWithoutProperties(_ref, _excluded$q);
3078
3078
  const conf = config$3[name];
3079
3079
  if (conf) {
3080
3080
  return /*#__PURE__*/jsxRuntime.jsx("svg", _objectSpread2(_objectSpread2({}, props), {}, {
@@ -9276,7 +9276,7 @@ createCommonjsModule(function (module, exports) {
9276
9276
  !function(e,n){module.exports=n();}(commonjsGlobal,(function(){return {name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var n=["th","st","nd","rd"],t=e%100;return "["+e+(n[(t-20)%10]||n[t]||n[0])+"]"}}}));
9277
9277
  });
9278
9278
 
9279
- const _excluded$q = ["view", "module", "scope", "form", "meta"];
9279
+ const _excluded$p = ["view", "module", "scope", "form", "meta"];
9280
9280
  dayjs__default["default"].extend(customParseFormat);
9281
9281
  dayjs__default["default"].extend(utc);
9282
9282
  dayjs__default["default"].extend(utc);
@@ -9650,7 +9650,7 @@ const filterCreateData = data => {
9650
9650
  form,
9651
9651
  meta
9652
9652
  } = data,
9653
- rest = _objectWithoutProperties(data, _excluded$q);
9653
+ rest = _objectWithoutProperties(data, _excluded$p);
9654
9654
  const _meta = isObjectEmpty(meta) ? undefined : meta;
9655
9655
  return _objectSpread2(_objectSpread2({}, rest), {}, {
9656
9656
  meta: _meta
@@ -10035,7 +10035,7 @@ SelectFilters.propTypes = {
10035
10035
  apiUrl: PropTypes__default["default"].string
10036
10036
  };
10037
10037
 
10038
- const _excluded$p = ["columns", "data", "defaultFilters", "style", "pagination", "loading", "onChange", "onFilterChange", "selectOptions", "filtersConfig", "rowSelection", "setShowFilters", "rowKey", "showFilters", "hideOnLoading", "sourcesKey", "className", "projects", "t", "selectedProject", "sourceId", "projectSources", "language", "scrollX", "apiUrl", "app", "doEmptyRows"];
10038
+ const _excluded$o = ["columns", "data", "defaultFilters", "style", "pagination", "loading", "onChange", "onFilterChange", "selectOptions", "filtersConfig", "rowSelection", "setShowFilters", "rowKey", "showFilters", "hideOnLoading", "sourcesKey", "className", "projects", "t", "selectedProject", "sourceId", "projectSources", "language", "scrollX", "apiUrl", "app", "doEmptyRows"];
10039
10039
  function DAFTable(_ref) {
10040
10040
  let {
10041
10041
  columns = [],
@@ -10066,7 +10066,7 @@ function DAFTable(_ref) {
10066
10066
  app,
10067
10067
  doEmptyRows
10068
10068
  } = _ref,
10069
- rest = _objectWithoutProperties(_ref, _excluded$p);
10069
+ rest = _objectWithoutProperties(_ref, _excluded$o);
10070
10070
  const [source, setSource] = React.useState([]);
10071
10071
  const projectData = (projects || []).find(p => p.id === selectedProject);
10072
10072
  const [filtersInit, setFiltersInit] = React.useState(!loading);
@@ -10788,7 +10788,7 @@ Pagination.propTypes = {
10788
10788
  isMobile: PropTypes__default["default"].bool
10789
10789
  };
10790
10790
 
10791
- const _excluded$o = ["size", "maxHeight", "dataSource", "columns", "pagination"];
10791
+ const _excluded$n = ["size", "maxHeight", "dataSource", "columns", "pagination"];
10792
10792
  function StickyTable(_ref) {
10793
10793
  let {
10794
10794
  size = null,
@@ -10797,7 +10797,7 @@ function StickyTable(_ref) {
10797
10797
  columns = {},
10798
10798
  pagination = false
10799
10799
  } = _ref,
10800
- props = _objectWithoutProperties(_ref, _excluded$o);
10800
+ props = _objectWithoutProperties(_ref, _excluded$n);
10801
10801
  return /*#__PURE__*/jsxRuntime.jsx("div", {
10802
10802
  className: "daf-sticky-table",
10803
10803
  children: /*#__PURE__*/jsxRuntime.jsx(antd.Table, _objectSpread2(_objectSpread2({}, props), {}, {
@@ -11262,7 +11262,7 @@ const BTN_SIZE = {
11262
11262
  LG: 'large'
11263
11263
  };
11264
11264
 
11265
- const _excluded$n = ["content", "size", "type", "icon", "onClick", "disabled", "loading", "title", "style", "className"];
11265
+ const _excluded$m = ["content", "size", "type", "icon", "onClick", "disabled", "loading", "title", "style", "className"];
11266
11266
  function DafButton(_ref) {
11267
11267
  let {
11268
11268
  content = '',
@@ -11276,7 +11276,7 @@ function DafButton(_ref) {
11276
11276
  style = {},
11277
11277
  className = ''
11278
11278
  } = _ref,
11279
- restProps = _objectWithoutProperties(_ref, _excluded$n);
11279
+ restProps = _objectWithoutProperties(_ref, _excluded$m);
11280
11280
  return /*#__PURE__*/jsxRuntime.jsx(antd.Button, _objectSpread2(_objectSpread2({
11281
11281
  icon: icon,
11282
11282
  type: type,
@@ -11510,12 +11510,12 @@ const Style$H = dt.div`
11510
11510
  }
11511
11511
  `;
11512
11512
 
11513
- const _excluded$m = ["children"];
11513
+ const _excluded$l = ["children"];
11514
11514
  const BorderedButton = _ref => {
11515
11515
  let {
11516
11516
  children
11517
11517
  } = _ref,
11518
- props = _objectWithoutProperties(_ref, _excluded$m);
11518
+ props = _objectWithoutProperties(_ref, _excluded$l);
11519
11519
  return /*#__PURE__*/jsxRuntime.jsx(Style$H, {
11520
11520
  className: "d-btn-cont",
11521
11521
  children: /*#__PURE__*/jsxRuntime.jsx(antd.Button, _objectSpread2(_objectSpread2({}, props), {}, {
@@ -11524,7 +11524,7 @@ const BorderedButton = _ref => {
11524
11524
  });
11525
11525
  };
11526
11526
 
11527
- var _templateObject$c;
11527
+ var _templateObject$b;
11528
11528
  const variantConfig = {
11529
11529
  default: {
11530
11530
  className: "default-badge",
@@ -11642,7 +11642,7 @@ function Badge(_ref) {
11642
11642
  })
11643
11643
  });
11644
11644
  }
11645
- const Style$G = dt.div(_templateObject$c || (_templateObject$c = _taggedTemplateLiteral(["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: 4px;\n\tpadding: 4px;\n\tmax-width: 100%;\n\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\n\t> svg {\n\t\tflex-shrink: 0;\n\t}\n\n\t> span {\n\t\tall: unset;\n\t\tmargin-left: 4px;\n\t\tfont-weight: 600;\n\t\tfont-size: 12px;\n\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tdisplay: block;\n\t\tmax-width: 100%;\n\t}\n"])));
11645
+ const Style$G = dt.div(_templateObject$b || (_templateObject$b = _taggedTemplateLiteral(["\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: 4px;\n\tpadding: 4px;\n\tmax-width: 100%;\n\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\n\t> svg {\n\t\tflex-shrink: 0;\n\t}\n\n\t> span {\n\t\tall: unset;\n\t\tmargin-left: 4px;\n\t\tfont-weight: 600;\n\t\tfont-size: 12px;\n\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tdisplay: block;\n\t\tmax-width: 100%;\n\t}\n"])));
11646
11646
  Badge.propTypes = {
11647
11647
  children: PropTypes__default["default"].node,
11648
11648
  className: PropTypes__default["default"].string,
@@ -11655,12 +11655,12 @@ Badge.propTypes = {
11655
11655
  props: PropTypes__default["default"].object
11656
11656
  };
11657
11657
 
11658
- const _excluded$l = ["icon"];
11658
+ const _excluded$k = ["icon"];
11659
11659
  function GetIcon(_ref) {
11660
11660
  let {
11661
11661
  icon
11662
11662
  } = _ref,
11663
- props = _objectWithoutProperties(_ref, _excluded$l);
11663
+ props = _objectWithoutProperties(_ref, _excluded$k);
11664
11664
  let Icon = Icons__namespace.CloseOutlined;
11665
11665
  if (Icons__namespace[icon]) {
11666
11666
  Icon = Icons__namespace[icon];
@@ -11982,9 +11982,9 @@ GoToSelect.propTypes = {
11982
11982
  t: PropTypes__default["default"].func
11983
11983
  };
11984
11984
 
11985
- const _excluded$k = ["options", "defaultSelected", "onChange", "textWhenMultiple", "withCount", "oneAlwaysSelected", "canUnselectLast", "isAvatarGroup", "maxAvatarCount", "dropDownWidth", "topAvatarValue", "isSingle", "selectionType"];
11985
+ const _excluded$j = ["options", "defaultSelected", "onChange", "textWhenMultiple", "withCount", "oneAlwaysSelected", "canUnselectLast", "isAvatarGroup", "maxAvatarCount", "dropDownWidth", "topAvatarValue", "isSingle", "selectionType"];
11986
11986
  const {
11987
- useToken: useToken$i
11987
+ useToken: useToken$j
11988
11988
  } = antd.theme;
11989
11989
 
11990
11990
  /**
@@ -12075,10 +12075,10 @@ function Multiselect(_ref) {
12075
12075
  isSingle = false,
12076
12076
  selectionType = SELECTION_TYPES.DEFAULT
12077
12077
  } = _ref,
12078
- restProps = _objectWithoutProperties(_ref, _excluded$k);
12078
+ restProps = _objectWithoutProperties(_ref, _excluded$j);
12079
12079
  const {
12080
12080
  token
12081
- } = useToken$i();
12081
+ } = useToken$j();
12082
12082
  const [selectValue, setSelectValue] = React.useState(Array.isArray(defaultSelected) ? defaultSelected.length > 0 ? defaultSelected : [] : [defaultSelected]);
12083
12083
  function onSelectChange(value) {
12084
12084
  if (!canUnselectLast && value.length === 0) {
@@ -12582,7 +12582,7 @@ const useHeader = _ref => {
12582
12582
  };
12583
12583
 
12584
12584
  const {
12585
- useToken: useToken$h
12585
+ useToken: useToken$i
12586
12586
  } = antd.theme;
12587
12587
  function BreadCrumbs({
12588
12588
  breadcrumbs = [],
@@ -12591,7 +12591,7 @@ function BreadCrumbs({
12591
12591
  const [splitIndex, setSplitIndex] = React.useState(0);
12592
12592
  const {
12593
12593
  token
12594
- } = useToken$h();
12594
+ } = useToken$i();
12595
12595
  const _renderBreadcrumb = (b, i, isLast, noOnClickLast = false) => {
12596
12596
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
12597
12597
  className: "flex breadcrumb-item",
@@ -12742,7 +12742,7 @@ DAFHeader.propTypes = {
12742
12742
  downloadDisabled: PropTypes__default["default"].any
12743
12743
  };
12744
12744
 
12745
- const _excluded$j = ["tabs", "onChange", "value", "className"];
12745
+ const _excluded$i = ["tabs", "onChange", "value", "className"];
12746
12746
  function TabsHeader(_ref) {
12747
12747
  let {
12748
12748
  tabs = [],
@@ -12750,7 +12750,7 @@ function TabsHeader(_ref) {
12750
12750
  value = '',
12751
12751
  className = 'mt-2'
12752
12752
  } = _ref,
12753
- rest = _objectWithoutProperties(_ref, _excluded$j);
12753
+ rest = _objectWithoutProperties(_ref, _excluded$i);
12754
12754
  return /*#__PURE__*/jsxRuntime.jsx("div", {
12755
12755
  className: formatClassname(['daf-tabs-header pl-6 pr-6', className]),
12756
12756
  children: /*#__PURE__*/jsxRuntime.jsx(antd.Tabs, _objectSpread2({
@@ -12847,16 +12847,14 @@ DrawerHeader.propTypes = {
12847
12847
  tabsConfig: PropTypes__default["default"].any
12848
12848
  };
12849
12849
 
12850
- const _excluded$i = ["label", "onClick", "icon", "type", "tooltip", "disabled", "loading", "style", "className"];
12851
- const useFooter = _ref => {
12852
- let {
12853
- leftContent,
12854
- centerContent,
12855
- rightContent,
12856
- actionButtons,
12857
- app,
12858
- isViewMode
12859
- } = _ref;
12850
+ const useFooter = ({
12851
+ leftContent,
12852
+ centerContent,
12853
+ rightContent,
12854
+ actionButtons,
12855
+ app,
12856
+ isViewMode
12857
+ }) => {
12860
12858
  const renderFooterContent = React.useMemo(() => {
12861
12859
  const FooterContent = () => /*#__PURE__*/jsxRuntime.jsxs("div", {
12862
12860
  className: "daf-footer-content",
@@ -12872,18 +12870,18 @@ const useFooter = _ref => {
12872
12870
  className: "daf-footer-actions",
12873
12871
  children: actionButtons.map((button, index) => {
12874
12872
  const {
12875
- label,
12876
- onClick,
12877
- icon,
12878
- type = BTN_TYPES.PRIMARY,
12879
- tooltip,
12880
- disabled = false,
12881
- loading = false,
12882
- style = {},
12883
- className = ""
12884
- } = button,
12885
- restProps = _objectWithoutProperties(button, _excluded$i);
12886
- return /*#__PURE__*/jsxRuntime.jsx(DafButton, _objectSpread2({
12873
+ label,
12874
+ onClick,
12875
+ icon,
12876
+ type = BTN_TYPES.PRIMARY,
12877
+ tooltip,
12878
+ disabled = false,
12879
+ loading = false,
12880
+ style = {},
12881
+ className = "",
12882
+ ...restProps
12883
+ } = button;
12884
+ return /*#__PURE__*/jsxRuntime.jsx(DafButton, {
12887
12885
  content: label,
12888
12886
  type: type,
12889
12887
  size: BTN_SIZE.MD,
@@ -12895,8 +12893,9 @@ const useFooter = _ref => {
12895
12893
  loading: loading,
12896
12894
  title: tooltip,
12897
12895
  style: style,
12898
- className: className
12899
- }, restProps), index);
12896
+ className: className,
12897
+ ...restProps
12898
+ }, index);
12900
12899
  })
12901
12900
  })]
12902
12901
  })]
@@ -12909,8 +12908,180 @@ const useFooter = _ref => {
12909
12908
  };
12910
12909
  };
12911
12910
 
12912
- var _templateObject$b;
12913
- const FooterContainer = dt.div(_templateObject$b || (_templateObject$b = _taggedTemplateLiteral(["\n\t.daf-footer {\n\t\tbackground: #ffffff;\n\t\tborder-top: 1px solid #e8e8e8;\n\t\tborder-left: none;\n\t\tborder-right: none;\n\t\tborder-bottom: none;\n\t\tborder-radius: 0;\n\t\tpadding: 24px;\n\t\tmargin: 0;\n\t\tbox-shadow: none;\n\t\tz-index: 100;\n\t\tposition: relative;\n\t\tmin-height: 80px;\n\n\t\t&.daf-footer-fixed {\n\t\t\tposition: fixed;\n\t\t\tbottom: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tz-index: 1000;\n\t\t}\n\n\t\t.daf-footer-content {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: space-between;\n\t\t\twidth: 100%;\n\t\t\tmin-height: 32px;\n\n\t\t\t.daf-footer-left {\n\t\t\t\tflex: 1;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: flex-start;\n\t\t\t}\n\n\t\t\t.daf-footer-center {\n\t\t\t\tflex: 1;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t}\n\n\t\t\t.daf-footer-right {\n\t\t\t\tflex: 1;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: flex-end;\n\t\t\t\tgap: 12px;\n\n\t\t\t\t.daf-footer-actions {\n\t\t\t\t\t.ant-btn {\n\t\t\t\t\t\theight: 40px;\n\t\t\t\t\t\tpadding: 0 24px;\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tfont-weight: 500;\n\t\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\t\ttransition: all 0.3s ease;\n\t\t\t\t\t\tborder: 1px solid transparent;\n\n\t\t\t\t\t\t&.ant-btn-primary {\n\t\t\t\t\t\t\tbackground-color: var(--color-primary-70);\n\t\t\t\t\t\t\tcolor: #ffffff;\n\t\t\t\t\t\t\tborder-color: var(--color-primary-70);\n\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tbackground-color: var(--color-primary-60);\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-60);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:active {\n\t\t\t\t\t\t\t\tbackground-color: var(--color-primary-80);\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-80);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:disabled {\n\t\t\t\t\t\t\t\tbackground-color: #f5f5f5;\n\t\t\t\t\t\t\t\tcolor: #bfbfbf;\n\t\t\t\t\t\t\t\tborder-color: #d9d9d9;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&.ant-btn-default {\n\t\t\t\t\t\t\tbackground: #ffffff;\n\t\t\t\t\t\t\tcolor: #666666;\n\t\t\t\t\t\t\tborder-color: #d9d9d9;\n\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-70);\n\t\t\t\t\t\t\t\tcolor: var(--color-primary-70);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:active {\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-80);\n\t\t\t\t\t\t\t\tcolor: var(--color-primary-80);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:disabled {\n\t\t\t\t\t\t\t\tbackground-color: #f5f5f5;\n\t\t\t\t\t\t\t\tcolor: #bfbfbf;\n\t\t\t\t\t\t\t\tborder-color: #d9d9d9;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&.ant-btn-ghost {\n\t\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\t\tcolor: #666666;\n\t\t\t\t\t\t\tborder-color: #d9d9d9;\n\n\t\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-70);\n\t\t\t\t\t\t\t\tcolor: var(--color-primary-70);\n\t\t\t\t\t\t\t\tbackground: rgba(0, 0, 0, 0.02);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:active {\n\t\t\t\t\t\t\t\tborder-color: var(--color-primary-80);\n\t\t\t\t\t\t\t\tcolor: var(--color-primary-80);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t&:disabled {\n\t\t\t\t\t\t\t\tcolor: #bfbfbf;\n\t\t\t\t\t\t\t\tborder-color: #d9d9d9;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Responsive design */\n\t@media (max-width: 768px) {\n\t\t.daf-footer {\n\t\t\tmargin: 0;\n\t\t\tpadding: 16px;\n\n\t\t\t.daf-footer-content {\n\t\t\t\tflex-direction: column;\n\t\t\t\tgap: 16px;\n\t\t\t\talign-items: stretch;\n\n\t\t\t\t.daf-footer-left,\n\t\t\t\t.daf-footer-center,\n\t\t\t\t.daf-footer-right {\n\t\t\t\t\tflex: none;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t}\n\n\t\t\t\t.daf-footer-right {\n\t\t\t\t\t.daf-footer-actions {\n\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* App-specific styling */\n\t&.sbg-app {\n\t\t.daf-footer {\n\t\t\tbackground: #f8f9fa;\n\t\t\tborder-color: #e9ecef;\n\t\t}\n\t}\n\n\t&.nashiriki-app {\n\t\t.daf-footer {\n\t\t\tbackground: #fff;\n\t\t\tborder-color: #d9d9d9;\n\t\t}\n\t}\n"])));
12911
+ const FooterContainer = dt.div`
12912
+ .daf-footer {
12913
+ background: #ffffff;
12914
+ border-top: 1px solid #e8e8e8;
12915
+ border-left: none;
12916
+ border-right: none;
12917
+ border-bottom: none;
12918
+ border-radius: 0;
12919
+ padding: 24px;
12920
+ margin: 0;
12921
+ box-shadow: none;
12922
+ z-index: 100;
12923
+ position: relative;
12924
+ min-height: 80px;
12925
+
12926
+ &.daf-footer-fixed {
12927
+ position: fixed;
12928
+ bottom: 0;
12929
+ left: 0;
12930
+ right: 0;
12931
+ z-index: 1000;
12932
+ }
12933
+
12934
+ .daf-footer-content {
12935
+ display: flex;
12936
+ align-items: center;
12937
+ justify-content: space-between;
12938
+ width: 100%;
12939
+ min-height: 32px;
12940
+
12941
+ .daf-footer-left {
12942
+ flex: 1;
12943
+ display: flex;
12944
+ align-items: center;
12945
+ justify-content: flex-start;
12946
+ }
12947
+
12948
+ .daf-footer-center {
12949
+ flex: 1;
12950
+ display: flex;
12951
+ align-items: center;
12952
+ justify-content: center;
12953
+ }
12954
+
12955
+ .daf-footer-right {
12956
+ flex: 1;
12957
+ display: flex;
12958
+ align-items: center;
12959
+ justify-content: flex-end;
12960
+ gap: 12px;
12961
+
12962
+ .daf-footer-actions {
12963
+ .ant-btn {
12964
+ height: 40px;
12965
+ padding: 0 24px;
12966
+ border-radius: 6px;
12967
+ font-weight: 500;
12968
+ font-size: 14px;
12969
+ transition: all 0.3s ease;
12970
+ border: 1px solid transparent;
12971
+
12972
+ &.ant-btn-primary {
12973
+ background-color: var(--color-primary-70);
12974
+ color: #ffffff;
12975
+ border-color: var(--color-primary-70);
12976
+
12977
+ &:hover {
12978
+ background-color: var(--color-primary-60);
12979
+ border-color: var(--color-primary-60);
12980
+ }
12981
+
12982
+ &:active {
12983
+ background-color: var(--color-primary-80);
12984
+ border-color: var(--color-primary-80);
12985
+ }
12986
+
12987
+ &:disabled {
12988
+ background-color: #f5f5f5;
12989
+ color: #bfbfbf;
12990
+ border-color: #d9d9d9;
12991
+ }
12992
+ }
12993
+
12994
+ &.ant-btn-default {
12995
+ background: #ffffff;
12996
+ color: #666666;
12997
+ border-color: #d9d9d9;
12998
+
12999
+ &:hover {
13000
+ border-color: var(--color-primary-70);
13001
+ color: var(--color-primary-70);
13002
+ }
13003
+
13004
+ &:active {
13005
+ border-color: var(--color-primary-80);
13006
+ color: var(--color-primary-80);
13007
+ }
13008
+
13009
+ &:disabled {
13010
+ background-color: #f5f5f5;
13011
+ color: #bfbfbf;
13012
+ border-color: #d9d9d9;
13013
+ }
13014
+ }
13015
+
13016
+ &.ant-btn-ghost {
13017
+ background: transparent;
13018
+ color: #666666;
13019
+ border-color: #d9d9d9;
13020
+
13021
+ &:hover {
13022
+ border-color: var(--color-primary-70);
13023
+ color: var(--color-primary-70);
13024
+ background: rgba(0, 0, 0, 0.02);
13025
+ }
13026
+
13027
+ &:active {
13028
+ border-color: var(--color-primary-80);
13029
+ color: var(--color-primary-80);
13030
+ }
13031
+
13032
+ &:disabled {
13033
+ color: #bfbfbf;
13034
+ border-color: #d9d9d9;
13035
+ }
13036
+ }
13037
+ }
13038
+ }
13039
+ }
13040
+ }
13041
+ }
13042
+
13043
+ /* Responsive design */
13044
+ @media (max-width: 768px) {
13045
+ .daf-footer {
13046
+ margin: 0;
13047
+ padding: 16px;
13048
+
13049
+ .daf-footer-content {
13050
+ flex-direction: column;
13051
+ gap: 16px;
13052
+ align-items: stretch;
13053
+
13054
+ .daf-footer-left,
13055
+ .daf-footer-center,
13056
+ .daf-footer-right {
13057
+ flex: none;
13058
+ justify-content: center;
13059
+ }
13060
+
13061
+ .daf-footer-right {
13062
+ .daf-footer-actions {
13063
+ justify-content: center;
13064
+ }
13065
+ }
13066
+ }
13067
+ }
13068
+ }
13069
+
13070
+ /* App-specific styling */
13071
+ &.sbg-app {
13072
+ .daf-footer {
13073
+ background: #f8f9fa;
13074
+ border-color: #e9ecef;
13075
+ }
13076
+ }
13077
+
13078
+ &.nashiriki-app {
13079
+ .daf-footer {
13080
+ background: #fff;
13081
+ border-color: #d9d9d9;
13082
+ }
13083
+ }
13084
+ `;
12914
13085
 
12915
13086
  function DAFFooter(_ref) {
12916
13087
  let {
@@ -15186,6 +15357,7 @@ Loader.propTypes = {
15186
15357
  function Widget(_ref) {
15187
15358
  let {
15188
15359
  title = "",
15360
+ noTitle = false,
15189
15361
  children,
15190
15362
  addedHeader = null,
15191
15363
  tooltip,
@@ -15234,7 +15406,7 @@ function Widget(_ref) {
15234
15406
  className: formatClassname(["daf-widget", "flex-1", className, !!tabsConfig && "with-tabs", isCollapsable && isCollapsed && "collapsed-widget"]),
15235
15407
  children: [loading && fullWidgetLoading && /*#__PURE__*/jsxRuntime.jsx(Loader, {
15236
15408
  background: "white"
15237
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
15409
+ }), !noTitle && /*#__PURE__*/jsxRuntime.jsxs("div", {
15238
15410
  className: "widget-header flex-column",
15239
15411
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
15240
15412
  className: "flex flex-row widget-header-items",
@@ -15291,17 +15463,16 @@ function Widget(_ref) {
15291
15463
  icon: !isExpanded ? /*#__PURE__*/jsxRuntime.jsx(Icons.RightOutlined, {
15292
15464
  style: {
15293
15465
  width: 10,
15294
- paddingTop: '4px'
15466
+ paddingTop: "4px"
15295
15467
  }
15296
- })
15297
- //<PlusOutlined style={{width: 10}} />
15298
- :
15468
+ }) :
15299
15469
  /*#__PURE__*/
15470
+ //<PlusOutlined style={{width: 10}} />
15300
15471
  //<MinusOutlined style={{ width: 10 }} />
15301
15472
  jsxRuntime.jsx(Icons.DownOutlined, {
15302
15473
  style: {
15303
15474
  width: 10,
15304
- paddingTop: '4px'
15475
+ paddingTop: "4px"
15305
15476
  }
15306
15477
  })
15307
15478
  })
@@ -15812,17 +15983,19 @@ function KeyIndicatorsWidget$1(_ref) {
15812
15983
  withTooltip = false,
15813
15984
  title = "Key Indicators",
15814
15985
  noMinWidth = false,
15815
- children
15986
+ children,
15987
+ noTitle = false
15816
15988
  } = _ref;
15817
15989
  const component = /*#__PURE__*/jsxRuntime.jsxs(Widget, {
15818
15990
  loading: loading,
15819
15991
  className: formatClassname(["flex-1 with-border-header", widgetClassName]),
15820
- title: t(title),
15992
+ title: noTitle ? undefined : t(title),
15993
+ noTitle: noTitle,
15821
15994
  children: [children, /*#__PURE__*/jsxRuntime.jsx(Style$E, {
15822
15995
  className: formatClassname(["flex", className]),
15823
15996
  children: config.map((c, i) => /*#__PURE__*/jsxRuntime.jsxs("div", {
15824
15997
  className: "row-item",
15825
- children: [/*#__PURE__*/jsxRuntime.jsx(Label, {
15998
+ children: [/*#__PURE__*/jsxRuntime.jsx(Label$1, {
15826
15999
  label: c.label,
15827
16000
  withTooltip: withTooltip
15828
16001
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
@@ -15839,7 +16012,7 @@ function KeyIndicatorsWidget$1(_ref) {
15839
16012
  }
15840
16013
  return component;
15841
16014
  }
15842
- function Label(_ref2) {
16015
+ function Label$1(_ref2) {
15843
16016
  let {
15844
16017
  label,
15845
16018
  withTooltip
@@ -18457,17 +18630,6 @@ const Style$z = dt.div`
18457
18630
  position: relative;
18458
18631
  width: 100%;
18459
18632
  height: 472px;
18460
- min-height: 300px;
18461
-
18462
- @media (max-width: 768px) {
18463
- height: 350px;
18464
- min-height: 250px;
18465
- }
18466
-
18467
- @media (max-width: 480px) {
18468
- height: 300px;
18469
- min-height: 200px;
18470
- }
18471
18633
 
18472
18634
  .filter-cont {
18473
18635
  position: absolute;
@@ -19312,11 +19474,6 @@ const useGlobe = ({
19312
19474
  }
19313
19475
  });
19314
19476
  setMapMarkers(newMarkers);
19315
-
19316
- // Resize the Mapbox GL JS map to ensure proper rendering after data changes
19317
- if (mapRef && mapRef.resize) {
19318
- mapRef.resize();
19319
- }
19320
19477
  }
19321
19478
  }, []);
19322
19479
  const createInstance = React.useCallback(() => {
@@ -19462,47 +19619,6 @@ const useGlobe = ({
19462
19619
  const instance = createInstance();
19463
19620
  if (instance) {
19464
19621
  setMapRef(instance);
19465
-
19466
- // Add comprehensive resize detection for Mapbox GL JS responsiveness
19467
- const handleResize = () => {
19468
- if (instance && instance.resize) {
19469
- // Add a small delay to ensure DOM has updated
19470
- setTimeout(() => {
19471
- instance.resize();
19472
- }, 100);
19473
- }
19474
- };
19475
-
19476
- // Listen to window resize
19477
- window.addEventListener('resize', handleResize);
19478
-
19479
- // Listen to container size changes using ResizeObserver
19480
- const resizeObserver = new ResizeObserver(() => {
19481
- handleResize();
19482
- });
19483
- if (container.current) {
19484
- resizeObserver.observe(container.current);
19485
- }
19486
-
19487
- // Store handlers for cleanup
19488
- instance._resizeHandler = handleResize;
19489
- instance._resizeObserver = resizeObserver;
19490
-
19491
- // Add IntersectionObserver to detect when globe becomes visible (handles sidenav scenarios)
19492
- const intersectionObserver = new IntersectionObserver(entries => {
19493
- entries.forEach(entry => {
19494
- if (entry.isIntersecting && instance && instance.resize) {
19495
- // Globe container is visible, force resize after a delay
19496
- setTimeout(() => {
19497
- instance.resize();
19498
- }, 200);
19499
- }
19500
- });
19501
- });
19502
- if (container.current) {
19503
- intersectionObserver.observe(container.current);
19504
- }
19505
- instance._intersectionObserver = intersectionObserver;
19506
19622
  } else {
19507
19623
  console.log('❌ [GLOBE HOOK] Failed to create map instance');
19508
19624
  }
@@ -19583,33 +19699,6 @@ const useGlobe = ({
19583
19699
  addAllDataToMap();
19584
19700
  }
19585
19701
  }, [data, mapRef, initialMarkerSetIsDone]);
19586
-
19587
- // Add effect to handle layout changes (like sidenav opening/closing)
19588
- React.useEffect(() => {
19589
- if (mapRef) {
19590
- // Force resize when component becomes visible or layout changes
19591
- const handleLayoutChange = () => {
19592
- if (mapRef && mapRef.resize) {
19593
- setTimeout(() => {
19594
- mapRef.resize();
19595
- }, 150);
19596
- }
19597
- };
19598
-
19599
- // Listen for visibility changes
19600
- document.addEventListener('visibilitychange', handleLayoutChange);
19601
-
19602
- // Listen for focus events (when user returns to tab)
19603
- window.addEventListener('focus', handleLayoutChange);
19604
-
19605
- // Store handlers for cleanup
19606
- mapRef._layoutChangeHandler = handleLayoutChange;
19607
- return () => {
19608
- document.removeEventListener('visibilitychange', handleLayoutChange);
19609
- window.removeEventListener('focus', handleLayoutChange);
19610
- };
19611
- }
19612
- }, [mapRef]);
19613
19702
  React.useEffect(() => {
19614
19703
  if (activeMarker && mapRef) {
19615
19704
  const marker = mapMarkers.find(m => m.data === activeMarker);
@@ -19625,21 +19714,6 @@ const useGlobe = ({
19625
19714
  return () => {
19626
19715
  isMounted.current = false;
19627
19716
 
19628
- // Cleanup window resize listener and ResizeObserver for Mapbox GL JS
19629
- if (mapRef && mapRef._resizeHandler) {
19630
- window.removeEventListener('resize', mapRef._resizeHandler);
19631
- }
19632
- if (mapRef && mapRef._resizeObserver) {
19633
- mapRef._resizeObserver.disconnect();
19634
- }
19635
- if (mapRef && mapRef._layoutChangeHandler) {
19636
- document.removeEventListener('visibilitychange', mapRef._layoutChangeHandler);
19637
- window.removeEventListener('focus', mapRef._layoutChangeHandler);
19638
- }
19639
- if (mapRef && mapRef._intersectionObserver) {
19640
- mapRef._intersectionObserver.disconnect();
19641
- }
19642
-
19643
19717
  // Defer unmounting to avoid race conditions
19644
19718
  const rootsToUnmount = [...roots.current];
19645
19719
  roots.current = [];
@@ -19655,7 +19729,7 @@ const useGlobe = ({
19655
19729
  });
19656
19730
  });
19657
19731
  };
19658
- }, [mapRef]);
19732
+ }, []);
19659
19733
 
19660
19734
  // Map control handlers
19661
19735
  const zoomHandler = React.useCallback(() => mapRef?.zoomIn(), [mapRef]);
@@ -19736,22 +19810,12 @@ const useGlobe = ({
19736
19810
  }),
19737
19811
  handler: moveDownHandler
19738
19812
  }], [zoomHandler, zoomOutHandler, recenterMap, moveUpHandler, moveDownHandler]);
19739
-
19740
- // Expose a manual resize method for external triggers
19741
- const forceResize = React.useCallback(() => {
19742
- if (mapRef && mapRef.resize) {
19743
- setTimeout(() => {
19744
- mapRef.resize();
19745
- }, 100);
19746
- }
19747
- }, [mapRef]);
19748
19813
  return {
19749
19814
  container,
19750
19815
  activeMarker,
19751
19816
  mapOptionsButtonsConfig,
19752
19817
  emptyStateIsVisible,
19753
- setEmptyStateIsVisible,
19754
- forceResize
19818
+ setEmptyStateIsVisible
19755
19819
  };
19756
19820
  };
19757
19821
 
@@ -19799,8 +19863,7 @@ function Globe(_ref) {
19799
19863
  const {
19800
19864
  container,
19801
19865
  activeMarker,
19802
- mapOptionsButtonsConfig,
19803
- forceResize
19866
+ mapOptionsButtonsConfig
19804
19867
  } = useGlobe({
19805
19868
  data: mappedData,
19806
19869
  user,
@@ -19827,17 +19890,6 @@ function Globe(_ref) {
19827
19890
  React.useEffect(() => {
19828
19891
  onRender === null || onRender === void 0 || onRender();
19829
19892
  }, [onRender]);
19830
-
19831
- // Force resize when component becomes visible (handles sidenav open/close scenarios)
19832
- React.useEffect(() => {
19833
- if (forceResize) {
19834
- // Trigger resize after component mounts
19835
- const timer = setTimeout(() => {
19836
- forceResize();
19837
- }, 300);
19838
- return () => clearTimeout(timer);
19839
- }
19840
- }, [forceResize]);
19841
19893
  return /*#__PURE__*/jsxRuntime.jsx(ComponentWithFocus, {
19842
19894
  children: /*#__PURE__*/jsxRuntime.jsxs(Style$z, {
19843
19895
  className: formatClassname([showSider && activeMarker && "with-sider"]),
@@ -20231,7 +20283,7 @@ const DetailsSection = _ref => {
20231
20283
  });
20232
20284
  };
20233
20285
 
20234
- const KEYS = {
20286
+ const SDG_KEYS = {
20235
20287
  NO_POVERTY: "noPoverty",
20236
20288
  ZERO_HUNGER: "zeroHunger",
20237
20289
  GOOD_HEALTH_WELL_BEING: "goodHealthWellbeing",
@@ -20250,75 +20302,146 @@ const KEYS = {
20250
20302
  PEACE_JUSTICE_STRONG_INSTITUTIONS: "peaceJusticeStrongInstitutions",
20251
20303
  PARTNERSHIPS_FOR_GOALS: "partnershipsForGoals"
20252
20304
  };
20305
+ const SDG_IMAGES = {
20306
+ [SDG_KEYS.NO_POVERTY]: {
20307
+ img: "/SDGs/SDGs.svg",
20308
+ disabled: "/SDGs/SDGs-17.svg"
20309
+ },
20310
+ [SDG_KEYS.ZERO_HUNGER]: {
20311
+ img: "/SDGs/SDGs-1.svg",
20312
+ disabled: "/SDGs/SDGs-18.svg"
20313
+ },
20314
+ [SDG_KEYS.GOOD_HEALTH_WELL_BEING]: {
20315
+ img: "/SDGs/SDGs-2.svg",
20316
+ disabled: "/SDGs/SDGs-19.svg"
20317
+ },
20318
+ [SDG_KEYS.QUALITY_EDUCATION]: {
20319
+ img: "/SDGs/SDGs-3.svg",
20320
+ disabled: "/SDGs/SDGs-20.svg"
20321
+ },
20322
+ [SDG_KEYS.GENDER_EQUALITY]: {
20323
+ img: "/SDGs/SDGs-4.svg",
20324
+ disabled: "/SDGs/SDGs-21.svg"
20325
+ },
20326
+ [SDG_KEYS.CLEAN_WATER_SANITATION]: {
20327
+ img: "/SDGs/SDGs-5.svg",
20328
+ disabled: "/SDGs/SDGs-22.svg"
20329
+ },
20330
+ [SDG_KEYS.AFFORDABLE_CLEAN_ENERGY]: {
20331
+ img: "/SDGs/SDGs-6.svg",
20332
+ disabled: "/SDGs/SDGs-23.svg"
20333
+ },
20334
+ [SDG_KEYS.DECENT_WORK_ECONOMIC_GROWTH]: {
20335
+ img: "/SDGs/SDGs-7.svg",
20336
+ disabled: "/SDGs/SDGs-24.svg"
20337
+ },
20338
+ [SDG_KEYS.INDUSTRY_INNOVATION_INFRASTRUCTURE]: {
20339
+ img: "/SDGs/SDGs-8.svg",
20340
+ disabled: "/SDGs/SDGs-25.svg"
20341
+ },
20342
+ [SDG_KEYS.REDUCED_INEQUALITIES]: {
20343
+ img: "/SDGs/SDGs-9.svg",
20344
+ disabled: "/SDGs/SDGs-26.svg"
20345
+ },
20346
+ [SDG_KEYS.SUSTAINABLE_CITIES_COMMUNITIES]: {
20347
+ img: "/SDGs/SDGs-10.svg",
20348
+ disabled: "/SDGs/SDGs-27.svg"
20349
+ },
20350
+ [SDG_KEYS.RESPONSIBLE_CONSUMPTION_PRODUCTION]: {
20351
+ img: "/SDGs/SDGs-11.svg",
20352
+ disabled: "/SDGs/SDGs-29.svg"
20353
+ },
20354
+ [SDG_KEYS.CLIMATE_ACTION]: {
20355
+ img: "/SDGs/SDGs-12.svg",
20356
+ disabled: "/SDGs/SDGs-30.svg"
20357
+ },
20358
+ [SDG_KEYS.LIFE_BELOW_WATER]: {
20359
+ img: "/SDGs/SDGs-13.svg",
20360
+ disabled: "/SDGs/SDGs-31.svg"
20361
+ },
20362
+ [SDG_KEYS.LIFE_ON_LAND]: {
20363
+ img: "/SDGs/SDGs-14.svg",
20364
+ disabled: "/SDGs/SDGs-32.svg"
20365
+ },
20366
+ [SDG_KEYS.PEACE_JUSTICE_STRONG_INSTITUTIONS]: {
20367
+ img: "/SDGs/SDGs-15.svg",
20368
+ disabled: "/SDGs/SDGs-33.svg"
20369
+ },
20370
+ [SDG_KEYS.PARTNERSHIPS_FOR_GOALS]: {
20371
+ img: "/SDGs/SDGs-16.svg",
20372
+ disabled: "/SDGs/SDGs-34.svg"
20373
+ }
20374
+ };
20375
+
20253
20376
  const getGoalConfig = () => {
20254
20377
  return [{
20255
20378
  img: "/SDGs/SDGs.svg",
20256
- key: KEYS.NO_POVERTY,
20257
- disabled: "/SDGs/SDGs-17.svg"
20379
+ key: SDG_KEYS.NO_POVERTY,
20380
+ disabled: "./SDGs/SDGs-17.svg"
20258
20381
  }, {
20259
20382
  img: "/SDGs/SDGs-1.svg",
20260
- key: KEYS.ZERO_HUNGER,
20261
- disabled: "/SDGs/SDGs-18.svg"
20383
+ key: SDG_KEYS.ZERO_HUNGER,
20384
+ disabled: "./SDGs/SDGs-18.svg"
20262
20385
  }, {
20263
20386
  img: "/SDGs/SDGs-2.svg",
20264
- key: KEYS.GOOD_HEALTH_WELL_BEING,
20387
+ key: SDG_KEYS.GOOD_HEALTH_WELL_BEING,
20265
20388
  disabled: "/SDGs/SDGs-19.svg"
20266
20389
  }, {
20267
20390
  img: "/SDGs/SDGs-3.svg",
20268
- key: KEYS.QUALITY_EDUCATION,
20391
+ key: SDG_KEYS.QUALITY_EDUCATION,
20269
20392
  disabled: "/SDGs/SDGs-20.svg"
20270
20393
  }, {
20271
20394
  img: "/SDGs/SDGs-4.svg",
20272
- key: KEYS.GENDER_EQUALITY,
20395
+ key: SDG_KEYS.GENDER_EQUALITY,
20273
20396
  disabled: "/SDGs/SDGs-21.svg"
20274
20397
  }, {
20275
20398
  img: "/SDGs/SDGs-5.svg",
20276
- key: KEYS.CLEAN_WATER_SANITATION,
20399
+ key: SDG_KEYS.CLEAN_WATER_SANITATION,
20277
20400
  disabled: "/SDGs/SDGs-22.svg"
20278
20401
  }, {
20279
20402
  img: "/SDGs/SDGs-6.svg",
20280
- key: KEYS.AFFORDABLE_CLEAN_ENERGY,
20403
+ key: SDG_KEYS.AFFORDABLE_CLEAN_ENERGY,
20281
20404
  disabled: "/SDGs/SDGs-23.svg"
20282
20405
  }, {
20283
20406
  img: "/SDGs/SDGs-7.svg",
20284
- key: KEYS.DECENT_WORK_ECONOMIC_GROWTH,
20407
+ key: SDG_KEYS.DECENT_WORK_ECONOMIC_GROWTH,
20285
20408
  disabled: "/SDGs/SDGs-24.svg"
20286
20409
  }, {
20287
20410
  img: "/SDGs/SDGs-8.svg",
20288
- key: KEYS.INDUSTRY_INNOVATION_INFRASTRUCTURE,
20411
+ key: SDG_KEYS.INDUSTRY_INNOVATION_INFRASTRUCTURE,
20289
20412
  disabled: "/SDGs/SDGs-25.svg"
20290
20413
  }, {
20291
20414
  img: "/SDGs/SDGs-9.svg",
20292
- key: KEYS.REDUCED_INEQUALITIES,
20415
+ key: SDG_KEYS.REDUCED_INEQUALITIES,
20293
20416
  disabled: "/SDGs/SDGs-26.svg"
20294
20417
  }, {
20295
20418
  img: "/SDGs/SDGs-10.svg",
20296
- key: KEYS.PARTNERSHIPS_FOR_GOALS,
20419
+ key: SDG_KEYS.PARTNERSHIPS_FOR_GOALS,
20297
20420
  disabled: "/SDGs/SDGs-27.svg"
20298
20421
  }, {
20299
20422
  img: "/SDGs/SDGs-11.svg",
20300
- key: KEYS.SUSTAINABLE_CITIES_COMMUNITIES,
20423
+ key: SDG_KEYS.SUSTAINABLE_CITIES_COMMUNITIES,
20301
20424
  disabled: "/SDGs/SDGs-28.svg"
20302
20425
  }, {
20303
20426
  img: "/SDGs/SDGs-12.svg",
20304
- key: KEYS.RESPONSIBLE_CONSUMPTION_PRODUCTION,
20427
+ key: SDG_KEYS.RESPONSIBLE_CONSUMPTION_PRODUCTION,
20305
20428
  disabled: "/SDGs/SDGs-29.svg"
20306
20429
  }, {
20307
20430
  img: "/SDGs/SDGs-13.svg",
20308
- key: KEYS.CLIMATE_ACTION,
20431
+ key: SDG_KEYS.CLIMATE_ACTION,
20309
20432
  disabled: "/SDGs/SDGs-30.svg"
20310
20433
  }, {
20311
20434
  img: "/SDGs/SDGs-14.svg",
20312
- key: KEYS.LIFE_BELOW_WATER,
20435
+ key: SDG_KEYS.LIFE_BELOW_WATER,
20313
20436
  disabled: "/SDGs/SDGs-31.svg"
20314
20437
  }, {
20315
20438
  img: "/SDGs/SDGs-15.svg",
20316
- key: KEYS.LIFE_ON_LAND,
20439
+ key: SDG_KEYS.LIFE_ON_LAND,
20317
20440
  disabled: "/SDGs/SDGs-32.svg"
20318
20441
  }, {
20319
20442
  img: "/SDGs/SDGs-16.svg",
20320
20443
  disabled: "/SDGs/SDGs-33.svg",
20321
- key: KEYS.PEACE_JUSTICE_STRONG_INSTITUTIONS
20444
+ key: SDG_KEYS.PEACE_JUSTICE_STRONG_INSTITUTIONS
20322
20445
  }];
20323
20446
  };
20324
20447
 
@@ -20348,7 +20471,160 @@ function SDGWidget(_ref) {
20348
20471
  })
20349
20472
  }));
20350
20473
  }
20351
- const SDGContainer = dt.div(_templateObject$8 || (_templateObject$8 = _taggedTemplateLiteral(["\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fit, minmax(90px, 1fr));\n\tgap: 8px;\n\n\t.sdg-item {\n\t\theight: 90px;\n\t\twidth: 90px;\n\t\tborder-radius: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t}\n\n\t.sdg-item-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\theight: 100%;\n\t\tcolor: white;\n\t\ttext-align: center;\n\t}\n"])));
20474
+ const SDGContainer = dt.div(_templateObject$8 || (_templateObject$8 = _taggedTemplateLiteral(["\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\n\tgap: 8px;\n\n\t.sdg-item {\n\t\theight: 100px;\n\t\twidth: 100px;\n\t\tborder-radius: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t}\n\n\t.sdg-item-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\theight: 100%;\n\t\tcolor: white;\n\t\ttext-align: center;\n\t}\n"])));
20475
+
20476
+ const ImageContainer = dt.div`
20477
+ overflow: hidden;
20478
+ position: relative;
20479
+
20480
+ .image {
20481
+ width: 100%;
20482
+ height: 151px;
20483
+ background-size: cover;
20484
+ background-position: center;
20485
+ background-repeat: no-repeat;
20486
+
20487
+ border-bottom-left-radius: 3px;
20488
+ border-bottom-right-radius: 3px;
20489
+ }
20490
+
20491
+ .icon-container {
20492
+ position: absolute;
20493
+ top: 10px;
20494
+ right: 10px;
20495
+ background: white;
20496
+ padding: 10px;
20497
+ border-radius: 6px;
20498
+ cursor: pointer;
20499
+ }
20500
+ `;
20501
+ const ProjectWidgetItems = dt.ul`
20502
+ list-style: none;
20503
+ padding: 0;
20504
+ padding-top: 10px;
20505
+ margin: 0;
20506
+
20507
+ .project-widget-item {
20508
+ display: flex;
20509
+ justify-content: space-between;
20510
+ align-items: center;
20511
+ border-bottom: 1px solid var(--base-gray-30);
20512
+ padding: 10px 0;
20513
+
20514
+ &:last-of-type {
20515
+ border-bottom: 0;
20516
+ }
20517
+ }
20518
+ `;
20519
+ const SDGList = dt.ul`
20520
+ list-style: none;
20521
+ padding: 0;
20522
+ display: flex;
20523
+ flex-wrap: wrap;
20524
+ gap: 4px;
20525
+ margin: 0;
20526
+
20527
+ .sdg-item-image {
20528
+ width: 24px;
20529
+ height: 24px;
20530
+ background-size: cover;
20531
+ background-position: center;
20532
+ background-repeat: no-repeat;
20533
+ }
20534
+ `;
20535
+ const Label = dt.span`
20536
+ font-family: SF UI Display;
20537
+ font-weight: 500;
20538
+ font-style: Medium;
20539
+ font-size: 14px;
20540
+ leading-trim: NONE;
20541
+ line-height: 26px;
20542
+ letter-spacing: 0%;
20543
+ color: #6c737f;
20544
+ `;
20545
+
20546
+ const {
20547
+ Meta
20548
+ } = antd.Card;
20549
+ const {
20550
+ useToken: useToken$h
20551
+ } = antd.theme;
20552
+ function ProjectWidget(_ref) {
20553
+ let {
20554
+ title,
20555
+ description,
20556
+ onLinkClick,
20557
+ image,
20558
+ linkIcon = "Link",
20559
+ sdgList,
20560
+ items,
20561
+ hideSDGList = false,
20562
+ t = x => x
20563
+ } = _ref;
20564
+ const [isHovered, setIsHovered] = React__default["default"].useState(false);
20565
+ const {
20566
+ token
20567
+ } = useToken$h();
20568
+ return /*#__PURE__*/jsxRuntime.jsxs(antd.Card, {
20569
+ style: {
20570
+ flex: 1
20571
+ },
20572
+ hoverable: true,
20573
+ onMouseEnter: () => setIsHovered(true),
20574
+ onMouseLeave: () => setIsHovered(false),
20575
+ cover: /*#__PURE__*/jsxRuntime.jsxs(ImageContainer, {
20576
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
20577
+ className: "image",
20578
+ style: {
20579
+ backgroundImage: "url(".concat(image, ")")
20580
+ }
20581
+ }), onLinkClick && /*#__PURE__*/jsxRuntime.jsx("div", {
20582
+ className: "icon-container",
20583
+ onClick: onLinkClick,
20584
+ children: /*#__PURE__*/jsxRuntime.jsx(CustomIcon, {
20585
+ name: linkIcon,
20586
+ width: 16,
20587
+ height: 16,
20588
+ color: isHovered ? token.colorPrimary7 : "black"
20589
+ })
20590
+ })]
20591
+ }),
20592
+ children: [/*#__PURE__*/jsxRuntime.jsx(Meta, {
20593
+ title: title || undefined,
20594
+ description: description || undefined
20595
+ }), /*#__PURE__*/jsxRuntime.jsx(ProjectWidgetItems, {
20596
+ children: items.map((item, index) => /*#__PURE__*/jsxRuntime.jsxs("li", {
20597
+ className: "project-widget-item",
20598
+ children: [/*#__PURE__*/jsxRuntime.jsx(Label, {
20599
+ children: item.label
20600
+ }), item.render()]
20601
+ }, index))
20602
+ }), !hideSDGList && /*#__PURE__*/jsxRuntime.jsxs("div", {
20603
+ style: {
20604
+ borderTop: "1px solid var(--base-gray-30)",
20605
+ paddingTop: "10px"
20606
+ },
20607
+ children: [/*#__PURE__*/jsxRuntime.jsx(Label, {
20608
+ children: "SDGs:"
20609
+ }), /*#__PURE__*/jsxRuntime.jsx(SDGList, {
20610
+ children: sdgList.map((sdg, index) => {
20611
+ return /*#__PURE__*/jsxRuntime.jsx("li", {
20612
+ className: "project-widget-item",
20613
+ children: /*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
20614
+ title: t("SDGS::".concat(sdg)),
20615
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
20616
+ style: {
20617
+ backgroundImage: "url(".concat(SDG_IMAGES[sdg].img, ")")
20618
+ },
20619
+ className: "sdg-item-image"
20620
+ })
20621
+ })
20622
+ }, index);
20623
+ })
20624
+ })]
20625
+ })]
20626
+ });
20627
+ }
20352
20628
 
20353
20629
  var Style$w = dt.div`
20354
20630
  border: 1px solid var(--base-gray-40);
@@ -59700,6 +59976,7 @@ exports.ProjectVisualisationAlert = Alert;
59700
59976
  exports.ProjectVisualisationFooter = Footer;
59701
59977
  exports.ProjectVisualisationHeader = Header;
59702
59978
  exports.ProjectVisualisationSelect = CustomSelect;
59979
+ exports.ProjectWidget = ProjectWidget;
59703
59980
  exports.RadarChart = RadarChart;
59704
59981
  exports.RadialBarChart = RadialBarChart;
59705
59982
  exports.SDGWidget = SDGWidget;