From a6ef4026c2c61685cce42947b5a503fd9d055b73 Mon Sep 17 00:00:00 2001 From: Fran McDade Date: Wed, 10 Apr 2024 23:25:03 +1000 Subject: [PATCH 1/2] feat: add beta tag to explorer with link to beta announcement (#3938) --- .../components/common/Banner/banner.styles.ts | 20 +++++++++++ .../MDXContent/anvil-cmg/betaAnnouncement.mdx | 1 + .../common/MDXContent/anvil-cmg/index.tsx | 1 + explorer/app/components/index.tsx | 1 + .../content/anvil-cmg/beta-announcement.mdx | 24 +++++++++++++ explorer/mdx-components.tsx | 9 +++++ explorer/pages/beta-announcement/index.tsx | 35 +++++++++++++++++++ .../dev/announcements/announcements.ts | 9 +++++ explorer/site-config/anvil-cmg/dev/config.ts | 4 +++ 9 files changed, 104 insertions(+) create mode 100644 explorer/app/components/common/Banner/banner.styles.ts create mode 100644 explorer/app/components/common/MDXContent/anvil-cmg/betaAnnouncement.mdx create mode 100644 explorer/app/content/anvil-cmg/beta-announcement.mdx create mode 100644 explorer/mdx-components.tsx create mode 100644 explorer/pages/beta-announcement/index.tsx diff --git a/explorer/app/components/common/Banner/banner.styles.ts b/explorer/app/components/common/Banner/banner.styles.ts new file mode 100644 index 000000000..a16b12a98 --- /dev/null +++ b/explorer/app/components/common/Banner/banner.styles.ts @@ -0,0 +1,20 @@ +import { BannerPrimary as DXBannerPrimary } from "@clevercanary/data-explorer-ui/lib/components/common/Banner/components/BannerPrimary/bannerPrimary"; +import styled from "@emotion/styled"; + +export const Banner = styled(DXBannerPrimary)` + .MuiAlert-message { + p { + font: inherit; + } + + a, + .MuiLink-root { + color: inherit; + text-decoration: underline; + + &:hover { + text-decoration: none; + } + } + } +`; diff --git a/explorer/app/components/common/MDXContent/anvil-cmg/betaAnnouncement.mdx b/explorer/app/components/common/MDXContent/anvil-cmg/betaAnnouncement.mdx new file mode 100644 index 000000000..aaf9c9635 --- /dev/null +++ b/explorer/app/components/common/MDXContent/anvil-cmg/betaAnnouncement.mdx @@ -0,0 +1 @@ +Welcome to our BETA release. Please see the [Beta Announcement](/beta-announcement) to learn more. diff --git a/explorer/app/components/common/MDXContent/anvil-cmg/index.tsx b/explorer/app/components/common/MDXContent/anvil-cmg/index.tsx index 180870f0d..3649a1df1 100644 --- a/explorer/app/components/common/MDXContent/anvil-cmg/index.tsx +++ b/explorer/app/components/common/MDXContent/anvil-cmg/index.tsx @@ -2,6 +2,7 @@ export { RenderComponent } from "@clevercanary/data-explorer-ui/lib/components/C export { Section } from "../../MDXMarkdown/components/Section/mdxSection.styles"; export { default as ExportToTerraStart } from "../common/exportToTerraStart.mdx"; export { default as ExportToTerraSuccess } from "../common/exportToTerraSuccess.mdx"; +export { default as BetaAnnouncement } from "./betaAnnouncement.mdx"; export { default as DataReleasePolicy } from "./dataReleasePolicy.mdx"; export { default as ExportWarning } from "./exportWarning.mdx"; export { default as LoginReminder } from "./loginReminder.mdx"; diff --git a/explorer/app/components/index.tsx b/explorer/app/components/index.tsx index 1a4cbe7ea..1d382943e 100644 --- a/explorer/app/components/index.tsx +++ b/explorer/app/components/index.tsx @@ -76,6 +76,7 @@ export { Publications } from "@clevercanary/data-explorer-ui/lib/components/Proj export { SupplementaryLinks } from "@clevercanary/data-explorer-ui/lib/components/Project/components/SupplementaryLinks/supplementaryLinks"; export { SupportRequest } from "@clevercanary/data-explorer-ui/lib/components/Support/components/SupportRequest/supportRequest"; export { ExportMethodView } from "@clevercanary/data-explorer-ui/lib/views/ExportMethodView/exportMethodView"; +export { Banner } from "./common/Banner/banner.styles"; export { ButtonOutline } from "./common/Button/components/ButtonOutline/buttonOutline"; export { MdxMarkdown } from "./common/MDXMarkdown/mdxMarkdown"; export { RenderComponents } from "./common/RenderComponents/renderComponents"; diff --git a/explorer/app/content/anvil-cmg/beta-announcement.mdx b/explorer/app/content/anvil-cmg/beta-announcement.mdx new file mode 100644 index 000000000..2d954bf9b --- /dev/null +++ b/explorer/app/content/anvil-cmg/beta-announcement.mdx @@ -0,0 +1,24 @@ + + +# General Announcement + +AnVIL is pleased to announce the public beta release of the AnVIL Data Explorer for Terra on Google Cloud Platform. The AnVIL Data Explorer is accessible at [https://explore.anvilproject.org/](https://explore.anvilproject.org). + +We are actively looking for your feedback! Please provide feedback via [https://help.anvilproject.org/](https://help.anvilproject.org). + +The AnVIL Data Explorer enables faceted searches of open and managed access datasets hosted in AnVIL, making it easier for researchers to find and custom-build cohorts. Documentation for using the AnVIL Data Explorer can be found [here](/guides). + +The AnVIL team is actively indexing more datasets, so the available datasets should grow every few weeks. + +At the time of this writing, known limitations of the AnVIL Data Explorer are: + +- Currently supports Terra on Google Cloud Platform. Support for Terra on Microsoft Azure is coming later this year. +- Incomplete dataset descriptions and other supporting information. This information is limited and should be growing, which will increase the usefulness of the AnVIL Data Explorer. +- Limited support for metadata export. This will evolve over time, but currently, some metadata is not handed off to Terra on GCP. We expect this to improve after the release. + +Currently, the General Availability release is targeted for around the middle of 2024. The timing will depend on the feedback and the nature of any issues discovered during this beta period. diff --git a/explorer/mdx-components.tsx b/explorer/mdx-components.tsx new file mode 100644 index 000000000..15b0a78bd --- /dev/null +++ b/explorer/mdx-components.tsx @@ -0,0 +1,9 @@ +import { MDXComponents } from "mdx/types"; +import * as C from "./app/components"; + +export function useMDXComponents(components: MDXComponents): MDXComponents { + return { + ...components, + a: ({ children, href }) => C.Link({ label: children, url: href ?? "" }), + }; +} diff --git a/explorer/pages/beta-announcement/index.tsx b/explorer/pages/beta-announcement/index.tsx new file mode 100644 index 000000000..76e68c5e0 --- /dev/null +++ b/explorer/pages/beta-announcement/index.tsx @@ -0,0 +1,35 @@ +import { Main } from "@clevercanary/data-explorer-ui/lib/components/Layout/components/ContentLayout/components/Main/main"; +import { ContentView } from "@clevercanary/data-explorer-ui/lib/views/ContentView/contentView"; +import { GetStaticProps, InferGetStaticPropsType } from "next"; +import { MDXRemote } from "next-mdx-remote"; +import { ContentTheme } from "../../app/components/common/Content/components/ContentTheme/contentTheme"; +import { MDX_COMPONENTS } from "../../app/content/common/constants"; +import { getContentStaticProps } from "../../app/content/common/contentPages"; +import NotFoundPage from "../404"; + +const slug = ["beta-announcement"]; + +export const getStaticProps: GetStaticProps = async () => { + return getContentStaticProps({ params: { slug } }, "Beta Announcement"); +}; + +const Page = ({ + layoutStyle, + mdxSource, +}: InferGetStaticPropsType): JSX.Element => { + if (!mdxSource) return ; + return ( + + + + } + layoutStyle={layoutStyle ?? undefined} + /> + ); +}; + +Page.Main = Main; + +export default Page; diff --git a/explorer/site-config/anvil-cmg/dev/announcements/announcements.ts b/explorer/site-config/anvil-cmg/dev/announcements/announcements.ts index e5c08e07b..a65bcac3c 100644 --- a/explorer/site-config/anvil-cmg/dev/announcements/announcements.ts +++ b/explorer/site-config/anvil-cmg/dev/announcements/announcements.ts @@ -3,9 +3,18 @@ import { ComponentsConfig, } from "@clevercanary/data-explorer-ui/lib/config/entities"; import * as C from "app/components"; +import * as MDX from "../../../../app/components/common/MDXContent/anvil-cmg"; export const announcements: ComponentsConfig = [ { component: C.SessionTimeout, } as ComponentConfig, + { + children: [ + { + component: MDX.BetaAnnouncement, + } as ComponentConfig, + ], + component: C.Banner, + } as ComponentConfig, ]; diff --git a/explorer/site-config/anvil-cmg/dev/config.ts b/explorer/site-config/anvil-cmg/dev/config.ts index f8c3950d0..0f81f94ac 100644 --- a/explorer/site-config/anvil-cmg/dev/config.ts +++ b/explorer/site-config/anvil-cmg/dev/config.ts @@ -141,6 +141,10 @@ export function makeConfig( flatten: true, label: "Help & Documentation", menuItems: [ + { + label: "Beta Announcement", + url: "/beta-announcement", + }, { label: "Guides", url: "/guides", From b223f9688d96ceb1081cbcfd93e8628d840ac159 Mon Sep 17 00:00:00 2001 From: Fran McDade Date: Thu, 11 Apr 2024 18:04:36 +1000 Subject: [PATCH 2/2] feat: merged announcements (#3938) --- .../Announcements/announcements.tsx | 38 +++++++++++++++++++ .../betaAnnouncement.styles.ts} | 0 .../BetaAnnouncement/betaAnnouncement.tsx | 11 ++++++ .../SessionTimeout/sessionTimeout.tsx | 11 ++++++ .../SystemIndexing/systemIndexing.tsx | 11 ++++++ .../components/SystemStatus/systemStatus.tsx | 11 ++++++ explorer/app/components/index.tsx | 2 +- .../common/systemStatusMapper/entities.ts | 0 .../systemStatusMapper/systemStatusMapper.ts | 0 .../site-config/anvil-cmg/cc-dev/config.ts | 4 +- .../dev/announcements/announcements.ts | 19 ++++------ explorer/site-config/anvil-cmg/dev/config.ts | 22 ++++++++--- explorer/site-config/anvil-cmg/prod/config.ts | 2 +- explorer/site-config/hca-dcp/dev/config.ts | 2 +- 14 files changed, 110 insertions(+), 23 deletions(-) create mode 100644 explorer/app/components/common/Banner/components/Announcements/announcements.tsx rename explorer/app/components/common/Banner/{banner.styles.ts => components/Announcements/components/BetaAnnouncement/betaAnnouncement.styles.ts} (100%) create mode 100644 explorer/app/components/common/Banner/components/Announcements/components/BetaAnnouncement/betaAnnouncement.tsx create mode 100644 explorer/app/components/common/Banner/components/Announcements/components/SessionTimeout/sessionTimeout.tsx create mode 100644 explorer/app/components/common/Banner/components/Announcements/components/SystemIndexing/systemIndexing.tsx create mode 100644 explorer/app/components/common/Banner/components/Announcements/components/SystemStatus/systemStatus.tsx rename explorer/app/viewModelBuilders/azul/{hca-dcp => }/common/systemStatusMapper/entities.ts (100%) rename explorer/app/viewModelBuilders/azul/{hca-dcp => }/common/systemStatusMapper/systemStatusMapper.ts (100%) diff --git a/explorer/app/components/common/Banner/components/Announcements/announcements.tsx b/explorer/app/components/common/Banner/components/Announcements/announcements.tsx new file mode 100644 index 000000000..2a75e78cd --- /dev/null +++ b/explorer/app/components/common/Banner/components/Announcements/announcements.tsx @@ -0,0 +1,38 @@ +import { useSessionTimeout } from "@clevercanary/data-explorer-ui/lib/hooks/useSessionTimeout"; +import { useSystemStatus } from "@clevercanary/data-explorer-ui/lib/hooks/useSystemStatus"; +import { ElementType, Fragment } from "react"; +import { SessionTimeout } from "./components/SessionTimeout/sessionTimeout"; +import { SystemIndexing as SystemIndexingBanner } from "./components/SystemIndexing/systemIndexing"; +import { SystemStatus as SystemStatusBanner } from "./components/SystemStatus/systemStatus"; + +interface AnnouncementsProps { + GeneralAnnouncement?: ElementType; + SystemIndexing?: ElementType; + SystemStatus?: ElementType; +} + +export const Announcements = ({ + GeneralAnnouncement, + SystemIndexing = SystemIndexingBanner, + SystemStatus = SystemStatusBanner, +}: AnnouncementsProps): JSX.Element => { + const sessionTimeout = useSessionTimeout(); + const systemStatus = useSystemStatus(); + const { clearSessionTimeout, isSessionTimeout } = sessionTimeout; + const { indexing, loading, ok } = systemStatus; + const isSystemUnavailable = !loading && !ok; + const isSystemIndexing = !loading && ok && indexing; + return ( + + {isSessionTimeout ? ( + + ) : isSystemUnavailable ? ( + + ) : isSystemIndexing ? ( + + ) : ( + GeneralAnnouncement && + )} + + ); +}; diff --git a/explorer/app/components/common/Banner/banner.styles.ts b/explorer/app/components/common/Banner/components/Announcements/components/BetaAnnouncement/betaAnnouncement.styles.ts similarity index 100% rename from explorer/app/components/common/Banner/banner.styles.ts rename to explorer/app/components/common/Banner/components/Announcements/components/BetaAnnouncement/betaAnnouncement.styles.ts diff --git a/explorer/app/components/common/Banner/components/Announcements/components/BetaAnnouncement/betaAnnouncement.tsx b/explorer/app/components/common/Banner/components/Announcements/components/BetaAnnouncement/betaAnnouncement.tsx new file mode 100644 index 000000000..271951da5 --- /dev/null +++ b/explorer/app/components/common/Banner/components/Announcements/components/BetaAnnouncement/betaAnnouncement.tsx @@ -0,0 +1,11 @@ +import React from "react"; +import { BetaAnnouncement as GeneralAnnouncement } from "../../../../../MDXContent/anvil-cmg"; +import { Banner } from "./betaAnnouncement.styles"; + +export const BetaAnnouncement = ({ ...props }): JSX.Element => { + return ( + + + + ); +}; diff --git a/explorer/app/components/common/Banner/components/Announcements/components/SessionTimeout/sessionTimeout.tsx b/explorer/app/components/common/Banner/components/Announcements/components/SessionTimeout/sessionTimeout.tsx new file mode 100644 index 000000000..8bfc9860a --- /dev/null +++ b/explorer/app/components/common/Banner/components/Announcements/components/SessionTimeout/sessionTimeout.tsx @@ -0,0 +1,11 @@ +import { Banner } from "@clevercanary/data-explorer-ui/lib/components/common/Banner/components/SessionTimeout/sessionTimeout.styles"; +import React from "react"; + +export const SessionTimeout = ({ ...props }): JSX.Element => { + return ( + + For your security, you have been logged out due to 15 minutes of + inactivity. + + ); +}; diff --git a/explorer/app/components/common/Banner/components/Announcements/components/SystemIndexing/systemIndexing.tsx b/explorer/app/components/common/Banner/components/Announcements/components/SystemIndexing/systemIndexing.tsx new file mode 100644 index 000000000..a6808b144 --- /dev/null +++ b/explorer/app/components/common/Banner/components/Announcements/components/SystemIndexing/systemIndexing.tsx @@ -0,0 +1,11 @@ +import { BannerPrimary } from "@clevercanary/data-explorer-ui/lib/components/common/Banner/components/BannerPrimary/bannerPrimary"; +import React from "react"; + +export const SystemIndexing = ({ ...props }): JSX.Element => { + return ( + + Data indexing in progress. Downloads and exports are disabled as search + results may be incomplete. + + ); +}; diff --git a/explorer/app/components/common/Banner/components/Announcements/components/SystemStatus/systemStatus.tsx b/explorer/app/components/common/Banner/components/Announcements/components/SystemStatus/systemStatus.tsx new file mode 100644 index 000000000..8e85cc87e --- /dev/null +++ b/explorer/app/components/common/Banner/components/Announcements/components/SystemStatus/systemStatus.tsx @@ -0,0 +1,11 @@ +import { BannerPrimary } from "@clevercanary/data-explorer-ui/lib/components/common/Banner/components/BannerPrimary/bannerPrimary"; +import React from "react"; + +export const SystemStatus = ({ ...props }): JSX.Element => { + return ( + + One or more of the system components are currently unavailable. + Functionality may be degraded. + + ); +}; diff --git a/explorer/app/components/index.tsx b/explorer/app/components/index.tsx index 1d382943e..fa26be0d8 100644 --- a/explorer/app/components/index.tsx +++ b/explorer/app/components/index.tsx @@ -76,7 +76,7 @@ export { Publications } from "@clevercanary/data-explorer-ui/lib/components/Proj export { SupplementaryLinks } from "@clevercanary/data-explorer-ui/lib/components/Project/components/SupplementaryLinks/supplementaryLinks"; export { SupportRequest } from "@clevercanary/data-explorer-ui/lib/components/Support/components/SupportRequest/supportRequest"; export { ExportMethodView } from "@clevercanary/data-explorer-ui/lib/views/ExportMethodView/exportMethodView"; -export { Banner } from "./common/Banner/banner.styles"; +export { Announcements } from "./common/Banner/components/Announcements/announcements"; export { ButtonOutline } from "./common/Button/components/ButtonOutline/buttonOutline"; export { MdxMarkdown } from "./common/MDXMarkdown/mdxMarkdown"; export { RenderComponents } from "./common/RenderComponents/renderComponents"; diff --git a/explorer/app/viewModelBuilders/azul/hca-dcp/common/systemStatusMapper/entities.ts b/explorer/app/viewModelBuilders/azul/common/systemStatusMapper/entities.ts similarity index 100% rename from explorer/app/viewModelBuilders/azul/hca-dcp/common/systemStatusMapper/entities.ts rename to explorer/app/viewModelBuilders/azul/common/systemStatusMapper/entities.ts diff --git a/explorer/app/viewModelBuilders/azul/hca-dcp/common/systemStatusMapper/systemStatusMapper.ts b/explorer/app/viewModelBuilders/azul/common/systemStatusMapper/systemStatusMapper.ts similarity index 100% rename from explorer/app/viewModelBuilders/azul/hca-dcp/common/systemStatusMapper/systemStatusMapper.ts rename to explorer/app/viewModelBuilders/azul/common/systemStatusMapper/systemStatusMapper.ts diff --git a/explorer/site-config/anvil-cmg/cc-dev/config.ts b/explorer/site-config/anvil-cmg/cc-dev/config.ts index df047903f..294d1ccf0 100644 --- a/explorer/site-config/anvil-cmg/cc-dev/config.ts +++ b/explorer/site-config/anvil-cmg/cc-dev/config.ts @@ -5,12 +5,12 @@ import { authenticationConfig } from "./authentication/authentication"; const config: SiteConfig = { ...makeConfig( "https://anvilproject.dev.clevercanary.com", - "https://anvilproject.dev.clevercanary.com" + "https://anvilproject.dev.clevercanary.com", + "https://service.anvil.gi.ucsc.edu" ), exportToTerraUrl: "https://bvdp-saturn-dev.appspot.com/", }; -config.dataSource.url = "https://service.anvil.gi.ucsc.edu/"; config.authentication = authenticationConfig; export default config; diff --git a/explorer/site-config/anvil-cmg/dev/announcements/announcements.ts b/explorer/site-config/anvil-cmg/dev/announcements/announcements.ts index a65bcac3c..d15b73407 100644 --- a/explorer/site-config/anvil-cmg/dev/announcements/announcements.ts +++ b/explorer/site-config/anvil-cmg/dev/announcements/announcements.ts @@ -2,19 +2,14 @@ import { ComponentConfig, ComponentsConfig, } from "@clevercanary/data-explorer-ui/lib/config/entities"; -import * as C from "app/components"; -import * as MDX from "../../../../app/components/common/MDXContent/anvil-cmg"; +import * as C from "../../../../app/components"; +import { BetaAnnouncement } from "../../../../app/components/common/Banner/components/Announcements/components/BetaAnnouncement/betaAnnouncement"; export const announcements: ComponentsConfig = [ { - component: C.SessionTimeout, - } as ComponentConfig, - { - children: [ - { - component: MDX.BetaAnnouncement, - } as ComponentConfig, - ], - component: C.Banner, - } as ComponentConfig, + component: C.Announcements, + props: { + GeneralAnnouncement: BetaAnnouncement, + }, + } as ComponentConfig, ]; diff --git a/explorer/site-config/anvil-cmg/dev/config.ts b/explorer/site-config/anvil-cmg/dev/config.ts index 0f81f94ac..9a808e5d5 100644 --- a/explorer/site-config/anvil-cmg/dev/config.ts +++ b/explorer/site-config/anvil-cmg/dev/config.ts @@ -1,7 +1,12 @@ +import { APIEndpoints } from "@clevercanary/data-explorer-ui/lib/apis/azul/common/entities"; import { ELEMENT_ALIGNMENT } from "@clevercanary/data-explorer-ui/lib/common/entities"; -import { SiteConfig } from "@clevercanary/data-explorer-ui/lib/config/entities"; +import { + SiteConfig, + SystemStatusBindResponseFn, +} from "@clevercanary/data-explorer-ui/lib/config/entities"; import { CATALOG_DEFAULT } from "../../../app/apis/azul/anvil-cmg/common/constants"; import * as C from "../../../app/components/index"; +import { bindSystemStatusResponse } from "../../../app/viewModelBuilders/azul/common/systemStatusMapper/systemStatusMapper"; import { ANVIL_CMG_CATEGORY_KEY, ANVIL_CMG_CATEGORY_LABEL } from "../category"; import { announcements } from "./announcements/announcements"; import { authenticationConfig } from "./authentication/authentication"; @@ -17,10 +22,14 @@ import { floating } from "./layout/floating"; // Template constants const APP_TITLE = "AnVIL Data Explorer"; +const DATA_URL = "https://service.anvil.gi.ucsc.edu"; +const BROWSER_URL = "https://explore.anvil.gi.ucsc.edu"; +const PORTAL_URL = "https://anvilproject.dev.clevercanary.com"; export function makeConfig( browserUrl: string, portalUrl: string, + dataUrl: string, catalog: string = CATALOG_DEFAULT ): SiteConfig { return { @@ -104,7 +113,7 @@ export function makeConfig( defaultParams: { catalog, }, - url: "https://service.anvil.gi.ucsc.edu/", + url: `${dataUrl}/`, }, entities: [ datasetsEntityConfig, @@ -170,6 +179,10 @@ export function makeConfig( apiPath: "index/summary", components: summary, }, + systemStatus: { + apiPath: `${dataUrl}${APIEndpoints.INDEX_STATUS}`, + bindResponse: bindSystemStatusResponse, + }, themeOptions: { palette: { primary: { @@ -181,9 +194,6 @@ export function makeConfig( }; } -const config: SiteConfig = makeConfig( - "https://explore.anvil.gi.ucsc.edu", - "https://anvilproject.dev.clevercanary.com" -); +const config: SiteConfig = makeConfig(BROWSER_URL, PORTAL_URL, DATA_URL); export default config; diff --git a/explorer/site-config/anvil-cmg/prod/config.ts b/explorer/site-config/anvil-cmg/prod/config.ts index 59b45a930..b774a2596 100644 --- a/explorer/site-config/anvil-cmg/prod/config.ts +++ b/explorer/site-config/anvil-cmg/prod/config.ts @@ -10,12 +10,12 @@ const config: SiteConfig = { ...makeConfig( "https://explore.anvilproject.org", "https://anvilproject.org", + "https://service.explore.anvilproject.org", "anvil4" ), exportToTerraUrl: "https://anvil.terra.bio/", }; -config.dataSource.url = "https://service.explore.anvilproject.org/"; config.authentication = authenticationConfig; const filesEntityConfig = config.entities.find( diff --git a/explorer/site-config/hca-dcp/dev/config.ts b/explorer/site-config/hca-dcp/dev/config.ts index ed0e2fd4e..772d34cc9 100644 --- a/explorer/site-config/hca-dcp/dev/config.ts +++ b/explorer/site-config/hca-dcp/dev/config.ts @@ -11,7 +11,7 @@ import { TEXT_HEADING_XLARGE, } from "@clevercanary/data-explorer-ui/lib/theme/common/typography"; import * as C from "../../../app/components/index"; -import { bindSystemStatusResponse } from "../../../app/viewModelBuilders/azul/hca-dcp/common/systemStatusMapper/systemStatusMapper"; +import { bindSystemStatusResponse } from "../../../app/viewModelBuilders/azul/common/systemStatusMapper/systemStatusMapper"; import { SiteConfig } from "../../common/entities"; import { HCA_DCP_CATEGORY_KEY, HCA_DCP_CATEGORY_LABEL } from "../category"; import { announcements } from "./announcements/announcements";