Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
58874b2
refactor: Update styles to use Mantine color variables for consistency
elizabetdev Nov 7, 2025
c3bcef7
refactor: Enhance theme handling and improve ThemeWrapper for Mantine…
elizabetdev Nov 7, 2025
3b02621
Refactor styles and components for improved theming and consistency
elizabetdev Nov 10, 2025
9816b3e
feat: Update theme styles and component colors
elizabetdev Nov 10, 2025
36b9e7a
refactor: Update background colors to use 'bg-muted' for consistency …
elizabetdev Nov 10, 2025
31cf822
refactor: Update color variables for consistency and remove unused ba…
elizabetdev Nov 10, 2025
8bce06b
refactor: Update AppNavLink icon handling and improve styling consist…
elizabetdev Nov 10, 2025
0a3507c
Refactor components to remove color props and replace with new color …
elizabetdev Nov 10, 2025
5809853
refactor: Remove unused react-bootstrap-range-slider dependency and c…
elizabetdev Nov 10, 2025
b98b7ad
refactor: Replace react-bootstrap Modal with Mantine's Modal componen…
elizabetdev Nov 10, 2025
b27b8f0
refactor: Remove SSRProvider from MyApp component; simplify layout st…
elizabetdev Nov 10, 2025
339e6fe
refactor: Update button variants and background classes for consisten…
elizabetdev Nov 10, 2025
8823ef8
refactor: Update TabItem component to use CSS variables for backgroun…
elizabetdev Nov 11, 2025
957c0e0
refactor: Remove unused semantic color variables for improved clarity…
elizabetdev Nov 11, 2025
c6ffb2a
refactor: Remove Bootstrap dependencies and replace layout utilities …
elizabetdev Nov 11, 2025
0a66bef
Merge remote-tracking branch 'origin/main' into update-color-vars
elizabetdev Nov 11, 2025
c3fa4d7
refactor: Update background color classes to use new highlighted colo…
elizabetdev Nov 11, 2025
f032082
refactor: Update LandingHeader and ThemeWrapper components to use CSS…
elizabetdev Nov 11, 2025
e9f6b73
refactor: Remove unused text color classes for improved clarity and m…
elizabetdev Nov 11, 2025
a8a526b
refactor: Update ThemeWrapper to use CSS variables for colors; enhanc…
elizabetdev Nov 11, 2025
e161731
refactor: Remove unused Background import from AutocompleteInput for …
elizabetdev Nov 11, 2025
13f1306
refactor: Update dark mode background and surface colors for improved…
elizabetdev Nov 11, 2025
d530c01
refactor: Update DSSelect to use Mantine's Select component; enhance …
elizabetdev Nov 11, 2025
9dc4f10
refactor: Update button icons to use IconPlayerPlayFilled; enhance st…
elizabetdev Nov 12, 2025
5a15c78
refactor: Enhance styling for SessionCard and add hover effects; intr…
elizabetdev Nov 12, 2025
f0768bf
refactor: Update ThemeWrapper for improved theming and consistency
elizabetdev Nov 12, 2025
414068c
Merge branch 'main' into update-color-vars
elizabetdev Nov 12, 2025
2679c98
Merge branch 'main' into update-color-vars
elizabetdev Nov 12, 2025
ef9b039
refactor: Clean up test structure for Dashboard workflow; improve rea…
elizabetdev Nov 12, 2025
5c71d50
Add react-select back to DSSelect
elizabetdev Nov 12, 2025
ce815ec
refactor: Update padding utilities to use Mantine spacing variables f…
elizabetdev Nov 12, 2025
6019cd8
Add changeset
elizabetdev Nov 12, 2025
55215da
refactor: Enhance user and help menu trigger styles for better respon…
elizabetdev Nov 12, 2025
2461d5f
Fix codemirror styles
elizabetdev Nov 12, 2025
9429034
refactor: Update theme colors and improve user menu trigger hover effect
elizabetdev Nov 12, 2025
0687e95
Adress PR review
elizabetdev Nov 12, 2025
7bb48a9
refactor: Update import paths
elizabetdev Nov 13, 2025
1a1c46c
Merge branch 'main' into update-color-vars
elizabetdev Nov 13, 2025
a18f92e
Onboarding styles
elizabetdev Nov 13, 2025
0cac4ff
style: update AppNav layout and add bottom section gradient
elizabetdev Nov 13, 2025
30e1d38
Fix search filters search input
elizabetdev Nov 13, 2025
0b37322
feat: enhance CopyButton with size prop and update SQLPreview integra…
elizabetdev Nov 13, 2025
80637d7
Address PR review.
elizabetdev Nov 13, 2025
b503e0e
Resolve dot colors to color
elizabetdev Nov 14, 2025
cb3b7b5
Fix listLink padding left
elizabetdev Nov 14, 2025
38a30ad
refactor: update navigation link styles to use nestedLink and nestedL…
elizabetdev Nov 14, 2025
4e2fe33
fix: update listLink hover color to use success color
elizabetdev Nov 14, 2025
4b0a76f
fix: add padding-block to nestedLink for improved spacing
elizabetdev Nov 14, 2025
821b9a6
Merge branch 'main' into update-color-vars
elizabetdev Nov 14, 2025
68c726a
fix: update ServiceMapSidePanel text color and badge styling
elizabetdev Nov 14, 2025
fb281fb
fix: update NewDashboardButton color to use CSS variable for text color
elizabetdev Nov 14, 2025
1a8b3d5
fix: increase font size of nestedLink from 12px to 13px for better re…
elizabetdev Nov 14, 2025
ecab514
Update changelog
elizabetdev Nov 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/semantic-color-tokens.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@hyperdx/app": minor
---

feat: Remove `bootstrap`, `react-bootstrap` and unused `react-bootstrap-range-slider`, adopt semantic tokens, and improve Mantine UI usage
3 changes: 0 additions & 3 deletions packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@
"@uiw/codemirror-themes": "^4.23.3",
"@uiw/react-codemirror": "^4.23.3",
"@xyflow/react": "^12.9.0",
"bootstrap": "^5.1.3",
"chrono-node": "^2.7.8",
"classnames": "^2.3.1",
"crypto-js": "^4.2.0",
Expand All @@ -76,8 +75,6 @@
"nuqs": "^1.17.0",
"object-hash": "^3.0.0",
"react": "18.3.1",
"react-bootstrap": "^2.4.0",
"react-bootstrap-range-slider": "^3.0.8",
"react-copy-to-clipboard": "^5.1.0",
"react-dom": "18.3.1",
"react-error-boundary": "^3.1.4",
Expand Down
38 changes: 19 additions & 19 deletions packages/app/pages/_app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import Head from 'next/head';
import { NextAdapter } from 'next-query-params';
import randomUUID from 'crypto-randomuuid';
import { enableMapSet } from 'immer';
import SSRProvider from 'react-bootstrap/SSRProvider';
import { QueryParamProvider } from 'use-query-params';
import HyperDX from '@hyperdx/browser';
import { ColorSchemeScript } from '@mantine/core';
Expand Down Expand Up @@ -96,13 +95,11 @@ export default function MyApp({ Component, pageProps }: AppPropsWithLayout) {
}, []);

useEffect(() => {
document.documentElement.className =
userPreferences.theme === 'dark' ? 'hdx-theme-dark' : 'hdx-theme-light';
// TODO: Remove after migration to Mantine
document.body.style.fontFamily = userPreferences.font
? `"${userPreferences.font}", sans-serif`
: '"IBM Plex Mono"';
}, [userPreferences.theme, userPreferences.font]);
}, [userPreferences.font]);

const getLayout = Component.getLayout ?? (page => page);

Expand All @@ -117,23 +114,26 @@ export default function MyApp({ Component, pageProps }: AppPropsWithLayout) {
/>
<meta name="theme-color" content="#25292e"></meta>
<meta name="google" content="notranslate" />
<ColorSchemeScript forceColorScheme="dark" />
<ColorSchemeScript
forceColorScheme={userPreferences.theme === 'dark' ? 'dark' : 'light'}
/>
</Head>

<SSRProvider>
<HDXQueryParamProvider>
<QueryParamProvider adapter={NextAdapter}>
<QueryClientProvider client={queryClient}>
<ThemeWrapper fontFamily={userPreferences.font}>
{getLayout(<Component {...pageProps} />)}
{confirmModal}
</ThemeWrapper>
<ReactQueryDevtools initialIsOpen={true} />
{background}
</QueryClientProvider>
</QueryParamProvider>
</HDXQueryParamProvider>
</SSRProvider>
<HDXQueryParamProvider>
<QueryParamProvider adapter={NextAdapter}>
<QueryClientProvider client={queryClient}>
<ThemeWrapper
fontFamily={userPreferences.font}
colorScheme={userPreferences.theme === 'dark' ? 'dark' : 'light'}
>
{getLayout(<Component {...pageProps} />)}
{confirmModal}
</ThemeWrapper>
<ReactQueryDevtools initialIsOpen={true} />
{background}
</QueryClientProvider>
</QueryParamProvider>
</HDXQueryParamProvider>
</React.Fragment>
);
}
26 changes: 11 additions & 15 deletions packages/app/src/AlertsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ function AlertHistoryCardList({ history }: { history: AlertHistory[] }) {
return (
<div className={styles.historyCardWrapper}>
{paddingItems.map((_, index) => (
<Tooltip label="No data" color="dark" withArrow key={index}>
<Tooltip label="No data" withArrow key={index}>
<div className={styles.historyCard} />
</Tooltip>
))}
Expand All @@ -84,7 +84,7 @@ function AlertDetails({ alert }: { alert: AlertsPageItem }) {
{alert.dashboard?.name}
{tileName ? (
<>
<i className="bi bi-chevron-right fs-8 mx-1 text-slate-400" />
<i className="bi bi-chevron-right fs-8 mx-1 " />
{tileName}
</>
) : null}
Expand Down Expand Up @@ -123,7 +123,7 @@ function AlertDetails({ alert }: { alert: AlertsPageItem }) {
<>
If value is {alert.thresholdType === 'above' ? 'over' : 'under'}{' '}
<span className="fw-bold">{alert.threshold}</span>
<span className="text-slate-400">&middot;</span>
<span>&middot;</span>
</>
);
}, [alert]);
Expand Down Expand Up @@ -172,16 +172,16 @@ function AlertDetails({ alert }: { alert: AlertsPageItem }) {
className={styles.alertLink}
title={linkTitle}
>
<i className={`bi ${alertIcon} text-slate-200 me-2 fs-8`} />
<i className={`bi ${alertIcon} me-2 fs-8`} />
{alertName}
</Link>
</div>
<div className="text-slate-400 fs-8 d-flex gap-2">
<div className="fs-8 d-flex gap-2">
{alertType}
{notificationMethod}
{alert.createdBy && (
<>
<span className="text-slate-400">&middot;</span>
<span>&middot;</span>
<span>
Created by {alert.createdBy.name || alert.createdBy.email}
</span>
Expand Down Expand Up @@ -219,7 +219,7 @@ function AlertCardList({ alerts }: { alerts: AlertsPageItem[] }) {
<i className="bi bi-check-lg"></i> OK
</div>
{okData.length === 0 && (
<div className="text-center text-slate-400 my-4 fs-8">No alerts</div>
<div className="text-center my-4 fs-8">No alerts</div>
)}
{okData.map((alert, index) => (
<AlertDetails key={index} alert={alert} />
Expand All @@ -243,7 +243,7 @@ export default function AlertsPage() {
<div className="my-4">
<Container maw={1500}>
<Alert
icon={<i className="bi bi-info-circle-fill text-slate-400" />}
icon={<i className="bi bi-info-circle-fill " />}
color="gray"
py="xs"
mt="md"
Expand All @@ -259,19 +259,15 @@ export default function AlertsPage() {
from dashboard charts and saved searches.
</Alert>
{isLoading ? (
<div className="text-center text-slate-400 my-4 fs-8">
Loading...
</div>
<div className="text-center my-4 fs-8">Loading...</div>
) : isError ? (
<div className="text-center text-slate-400 my-4 fs-8">Error</div>
<div className="text-center my-4 fs-8">Error</div>
) : alerts?.length ? (
<>
<AlertCardList alerts={alerts} />
</>
) : (
<div className="text-center text-slate-400 my-4 fs-8">
No alerts created yet
</div>
<div className="text-center my-4 fs-8">No alerts created yet</div>
)}
</Container>
</div>
Expand Down
77 changes: 22 additions & 55 deletions packages/app/src/AppNav.components.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,8 @@ export const AppNavContext = React.createContext<{

export const AppNavCloudBanner = () => {
return (
<div className="my-3 bg-hdx-dark rounded p-2 text-center">
<span className="text-slate-300 fs-8">
Ready to deploy on ClickHouse Cloud?
</span>
<div className="my-3 bg-muted rounded p-2 text-center">
<span className="fs-8">Ready to deploy on ClickHouse Cloud?</span>
<div className="mt-2 mb-2">
<Link
href="https://clickhouse.com/docs/use-cases/observability/clickstack/getting-started#deploy-with-clickhouse-cloud"
Expand Down Expand Up @@ -84,16 +82,9 @@ export const AppNavUserMenu = ({
<Menu.Target>
<Paper
data-testid="user-menu-trigger"
m="sm"
mt={8}
px={8}
py={4}
radius="md"
{...(isCollapsed && {
p: 2,
bg: 'transparent',
className={cx(styles.userMenuTrigger, {
[styles.userMenuTriggerCollapsed]: isCollapsed,
})}
className={styles.appNavMenu}
>
<Group gap="xs" wrap="nowrap" miw={0}>
<Avatar size="sm" radius="xl" color="green">
Expand Down Expand Up @@ -141,7 +132,7 @@ export const AppNavUserMenu = ({
</Text>
</div>
</Tooltip>
<Icon name="chevron-right" className="fs-8 text-slate-400" />
<Icon name="chevron-right" className="fs-8 " />
</>
)}
</Group>
Expand Down Expand Up @@ -213,21 +204,13 @@ export const AppNavHelpMenu = ({
] = useDisclosure(false);

// const isTeamHasNoData = useIsTeamHasNoData();
const size = 28;

return (
<>
<Paper
mb={8}
ml="sm"
withBorder
w={size}
h={size}
radius="xl"
{...(isCollapsed && {
ml: 'sm',
className={cx(styles.helpMenuTrigger, {
[styles.helpMenuTriggerCollapsed]: isCollapsed,
})}
className={styles.appNavMenu}
>
<Menu
withArrow
Expand All @@ -237,12 +220,7 @@ export const AppNavHelpMenu = ({
>
<Menu.Target>
<UnstyledButton data-testid="help-menu-trigger" w="100%">
<Group
align="center"
justify="center"
h={size}
className="text-slate-200 "
>
<Group align="center" justify="center" h={28}>
<Icon name="question-lg" />
</Group>
</UnstyledButton>
Expand All @@ -251,7 +229,7 @@ export const AppNavHelpMenu = ({
<Menu.Label>
Help{' '}
{version && (
<Text size="xs" c="gray.7" component="span">
<Text size="xs" component="span">
v{version}
</Text>
)}
Expand Down Expand Up @@ -295,15 +273,15 @@ export const AppNavHelpMenu = ({
export const AppNavLink = ({
className,
label,
iconName,
icon,
href,
isExpanded,
onToggle,
isBeta,
}: {
className?: string;
label: React.ReactNode;
iconName: string;
icon: React.ReactNode;
href: string;
isExpanded?: boolean;
onToggle?: () => void;
Expand All @@ -320,37 +298,26 @@ export const AppNavLink = ({
data-testid={testId}
href={href}
className={cx(
styles.listLink,
{ [styles.listLinkActive]: pathname?.includes(href) },
className,
'text-decoration-none d-flex justify-content-between align-items-center fs-7 text-muted-hover',
{ 'fw-600 text-success': pathname?.includes(href) },
)}
style={{ display: 'flex', alignItems: 'center' }}
>
<span>
<i className={`bi ${iconName} pe-2 text-slate-300`} />{' '}
{!isCollapsed && (
<span>
{label}
{isBeta && (
<Badge
size="xs"
ms="xs"
color="gray.4"
autoContrast
radius="sm"
className="align-text-bottom"
>
Beta
</Badge>
)}
</span>
)}
<span style={{ display: 'flex', alignItems: 'center' }}>
<span className={styles.linkIcon}>{icon}</span>
{!isCollapsed && <span>{label}</span>}
</span>
</Link>
{!isCollapsed && isBeta && (
<Badge size="xs" radius="sm" color="gray" style={{ marginRight: 8 }}>
Beta
</Badge>
)}
{!isCollapsed && onToggle && (
<ActionIcon
data-testid={`${testId}-toggle`}
variant="subtle"
color="dark.2"
size="sm"
onClick={onToggle}
>
Expand Down
Loading
Loading