diff --git a/.changeset/green-frogs-glow.md b/.changeset/green-frogs-glow.md
new file mode 100644
index 00000000..d0b7c15f
--- /dev/null
+++ b/.changeset/green-frogs-glow.md
@@ -0,0 +1,5 @@
+---
+"@hyperdx/app": patch
+---
+
+feat: Add text-brand semantic color tokens for theme flexibility
diff --git a/packages/app/src/AuthPage.tsx b/packages/app/src/AuthPage.tsx
index 377d8cf1..8b2aca4d 100644
--- a/packages/app/src/AuthPage.tsx
+++ b/packages/app/src/AuthPage.tsx
@@ -138,7 +138,7 @@ export default function AuthPage({ action }: { action: 'register' | 'login' }) {
: isRegister
? 'Register for '
: 'Login to '}
- HyperDX
+ HyperDX
{action === 'login' && (
Welcome back!
diff --git a/packages/app/src/DBDashboardImportPage.tsx b/packages/app/src/DBDashboardImportPage.tsx
index f8f07772..faaffb50 100644
--- a/packages/app/src/DBDashboardImportPage.tsx
+++ b/packages/app/src/DBDashboardImportPage.tsx
@@ -110,7 +110,7 @@ function FileSelection({
diff --git a/packages/app/src/Icon.tsx b/packages/app/src/Icon.tsx
index 36fc35ee..873602b8 100644
--- a/packages/app/src/Icon.tsx
+++ b/packages/app/src/Icon.tsx
@@ -10,7 +10,7 @@ export default function Icon({ size = 16 }: { size?: number }) {
This Event,
+ label: This Event
,
timestamp: new Date(timestamp).toISOString(),
}}
/>
diff --git a/packages/app/src/components/ExpandableRowTable.tsx b/packages/app/src/components/ExpandableRowTable.tsx
index 1fc7808e..6cf9bce4 100644
--- a/packages/app/src/components/ExpandableRowTable.tsx
+++ b/packages/app/src/components/ExpandableRowTable.tsx
@@ -154,7 +154,7 @@ const ExpandButton = memo(
type="button"
className={cx(styles.expandButton, {
[styles.expanded]: isExpanded,
- 'text-success': highlightedLineId === rowId,
+ 'text-brand': highlightedLineId === rowId,
'text-muted': highlightedLineId !== rowId,
})}
onClick={e => {
diff --git a/packages/app/src/components/InputLanguageSwitch.tsx b/packages/app/src/components/InputLanguageSwitch.tsx
index b79ced8a..d700a538 100644
--- a/packages/app/src/components/InputLanguageSwitch.tsx
+++ b/packages/app/src/components/InputLanguageSwitch.tsx
@@ -25,7 +25,7 @@ export default function InputLanguageSwitch({
)}
onLanguageChange('sql')}
size="xs"
role="button"
@@ -37,7 +37,7 @@ export default function InputLanguageSwitch({
size="xs"
role="button"
fw={500}
- c={language === 'lucene' ? 'var(--color-text-success)' : 'gray'}
+ c={language === 'lucene' ? 'var(--color-text-brand)' : 'gray'}
onClick={() => onLanguageChange('lucene')}
>
Lucene
diff --git a/packages/app/src/components/TimePicker/TimePicker.tsx b/packages/app/src/components/TimePicker/TimePicker.tsx
index 78228e19..eb46596e 100644
--- a/packages/app/src/components/TimePicker/TimePicker.tsx
+++ b/packages/app/src/components/TimePicker/TimePicker.tsx
@@ -223,7 +223,7 @@ const TimePickerComponent = ({
data-testid="time-picker-input"
leftSection={
isLiveMode ? (
-
+
) : (
)
@@ -231,7 +231,7 @@ const TimePickerComponent = ({
styles={{
input: {
color: isLiveMode
- ? 'var(--color-text-success)'
+ ? 'var(--color-text-brand)'
: 'var(--color-text)',
},
}}
diff --git a/packages/app/src/components/charts/DisplaySwitcher.tsx b/packages/app/src/components/charts/DisplaySwitcher.tsx
index b75acf8c..7b59e582 100644
--- a/packages/app/src/components/charts/DisplaySwitcher.tsx
+++ b/packages/app/src/components/charts/DisplaySwitcher.tsx
@@ -30,7 +30,7 @@ function DisplaySwitcher({
size="xs"
me={2}
className={cx({
- 'text-success': value === optionValue,
+ 'text-brand': value === optionValue,
'text-muted-hover': value !== optionValue,
})}
disabled={disabled}
diff --git a/packages/app/src/theme/semanticColorsGrouped.ts b/packages/app/src/theme/semanticColorsGrouped.ts
index 6885d599..626e5fe9 100644
--- a/packages/app/src/theme/semanticColorsGrouped.ts
+++ b/packages/app/src/theme/semanticColorsGrouped.ts
@@ -14,7 +14,6 @@ export const semanticColorsGrouped = {
'color-bg-success',
'color-bg-danger',
'color-bg-warning',
- 'color-bg-brand',
'color-bg-modal',
'color-bg-code',
'color-bg-kbd',
@@ -30,6 +29,8 @@ export const semanticColorsGrouped = {
'color-text-muted-hover',
'color-text-success',
'color-text-success-hover',
+ 'color-text-brand',
+ 'color-text-brand-hover',
'color-text-danger',
],
icons: ['color-icon-primary', 'color-icon-muted'],
diff --git a/packages/app/styles/SessionSubpanelV2.module.scss b/packages/app/styles/SessionSubpanelV2.module.scss
index 513a1ca5..69559e3a 100644
--- a/packages/app/styles/SessionSubpanelV2.module.scss
+++ b/packages/app/styles/SessionSubpanelV2.module.scss
@@ -59,7 +59,7 @@
}
.eventRowTitle {
- color: var(--color-text-success);
+ color: var(--color-text-brand);
}
}
diff --git a/packages/app/styles/SessionsPage.module.scss b/packages/app/styles/SessionsPage.module.scss
index c79d2cf8..27b37010 100644
--- a/packages/app/styles/SessionsPage.module.scss
+++ b/packages/app/styles/SessionsPage.module.scss
@@ -1,7 +1,7 @@
.sessionCard {
&:hover {
.emailText {
- color: var(--color-text-success);
+ color: var(--color-text-brand);
}
}
}
diff --git a/packages/app/styles/SourceSelectControlled.module.scss b/packages/app/styles/SourceSelectControlled.module.scss
index efc8e37e..ce218646 100644
--- a/packages/app/styles/SourceSelectControlled.module.scss
+++ b/packages/app/styles/SourceSelectControlled.module.scss
@@ -1,12 +1,12 @@
.sourceSchemaPreviewButton {
pointer-events: all;
font-size: var(--mantine-font-size-xxs);
- color: var(--color-text-success);
+ color: var(--color-text-brand);
padding-inline: var(--mantine-spacing-xxxs);
border-radius: var(--mantine-radius-xs);
&:hover {
- color: var(--color-text-success-hover);
+ color: var(--color-text-brand-hover);
cursor: pointer;
}
}
diff --git a/packages/app/styles/_semantic-colors.scss b/packages/app/styles/_semantic-colors.scss
index 527d2f25..38f7101e 100644
--- a/packages/app/styles/_semantic-colors.scss
+++ b/packages/app/styles/_semantic-colors.scss
@@ -18,7 +18,6 @@
--color-bg-success: var(--mantine-color-green-5);
--color-bg-danger: var(--mantine-color-red-4);
--color-bg-warning: var(--mantine-color-orange-5);
- --color-bg-brand: #4ffa7a;
/* Borders & Dividers */
--color-border: var(--mantine-color-dark-5);
@@ -34,6 +33,8 @@
--color-text-muted-hover: var(--mantine-color-dark-1);
--color-text-success: var(--mantine-color-green-4);
--color-text-success-hover: var(--mantine-color-green-3);
+ --color-text-brand: var(--mantine-color-green-4);
+ --color-text-brand-hover: var(--mantine-color-green-3);
--color-text-danger: var(--mantine-color-red-3);
--color-text-sidenav-link: var(--mantine-color-dark-0);
--color-text-sidenav-link-active: var(--color-text-primary);
@@ -117,7 +118,6 @@
--color-bg-success: var(--mantine-color-green-8);
--color-bg-danger: var(--mantine-color-red-8);
--color-bg-warning: var(--mantine-color-orange-8);
- --color-bg-brand: var(--mantine-color-green-8);
/* Borders & Dividers - inverted */
--color-border: var(--mantine-color-gray-1);
@@ -133,6 +133,8 @@
--color-text-muted-hover: var(--mantine-color-dark-9);
--color-text-success: var(--mantine-color-green-8);
--color-text-success-hover: var(--mantine-color-green-9);
+ --color-text-brand: var(--mantine-color-green-8);
+ --color-text-brand-hover: var(--mantine-color-green-9);
--color-text-danger: var(--mantine-color-red-8);
--color-text-sidenav-link: var(--mantine-color-dark-6);
--color-text-sidenav-link-active: var(--mantine-color-green-9);
diff --git a/packages/app/styles/_utilities.scss b/packages/app/styles/_utilities.scss
index 65e2e713..df0d4d5f 100644
--- a/packages/app/styles/_utilities.scss
+++ b/packages/app/styles/_utilities.scss
@@ -116,6 +116,19 @@
}
}
+.text-brand {
+ color: var(--color-text-brand) !important;
+}
+
+.text-brand-hover {
+ color: var(--color-text-brand);
+ transition: color 0.2s ease;
+
+ &:hover {
+ color: var(--color-text-brand-hover);
+ }
+}
+
.text-link {
color: var(--color-text-primary) !important;
}