diff --git a/.changeset/five-laws-pull.md b/.changeset/five-laws-pull.md new file mode 100644 index 00000000..b2887621 --- /dev/null +++ b/.changeset/five-laws-pull.md @@ -0,0 +1,5 @@ +--- +"@hyperdx/app": patch +--- + +fix: the banner for the clickhouse build can now be collapsed diff --git a/packages/app/src/layout.tsx b/packages/app/src/layout.tsx index 9b124528..ec32794b 100644 --- a/packages/app/src/layout.tsx +++ b/packages/app/src/layout.tsx @@ -1,11 +1,13 @@ import React from 'react'; import Link from 'next/link'; -import { Box, Center, Text } from '@mantine/core'; +import { Button, Center, Group, Text } from '@mantine/core'; +import { IconX } from '@tabler/icons-react'; import AppNav from '@/components/AppNav'; import { IS_CLICKHOUSE_BUILD } from '@/config'; import { HDXSpotlightProvider } from './Spotlights'; +import { useLocalStorage } from './utils'; /** * Next.js layout for pages that use the AppNav component. Using the same layout @@ -16,44 +18,62 @@ import { HDXSpotlightProvider } from './Spotlights'; * * @example SearchPage.getLayout = withAppNav; */ -export const withAppNav = (page: React.ReactNode) => { +function PageWrapper({ children }: { children: React.ReactNode }) { + const [bannerState, setBannerState] = useLocalStorage( + 'clickstack-banner-state', + 'opened', + ); + const [hasMounted, setHasMounted] = React.useState(false); // prevents banner flash + React.useEffect(() => setHasMounted(true), []); + const bannerIsActive = + hasMounted && IS_CLICKHOUSE_BUILD && bannerState === 'opened'; + return ( - -
- {IS_CLICKHOUSE_BUILD && ( - -
- - This is not recommended for production use and is lacking core - ClickStack features such as alerts and saved searches. For a - proper experience, visit the{' '} - - - ClickStack Docs - - - -
-
- )} -
- -
+ {bannerIsActive && ( + +
+ + This is not recommended for production use and is lacking core + ClickStack features such as alerts and saved searches. For a + proper experience, visit the{' '} + + + ClickStack Docs + + + +
+
+ {' '} + + + )} +
+ +
+ {children}
+
+ ); +} + +export const withAppNav = (page: React.ReactNode): React.ReactNode => { + return ( + + {page} ); };