From 358d9b3e685ab754016c4cbf3d19d72acbb20033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Wed, 1 Jul 2026 16:20:18 -0600 Subject: [PATCH 1/3] fix[frontend]():standarized pages margins --- frontend/src/features/adversaries/pages/AdversariesPage.tsx | 2 +- .../src/features/alerting-rules/pages/AlertingRulesPage.tsx | 2 +- frontend/src/features/alerts/pages/AlertsPage.tsx | 2 +- frontend/src/features/alerts/pages/TaggingRulesPage.tsx | 2 +- frontend/src/features/audit/pages/AuditPage.tsx | 2 +- frontend/src/features/billing/pages/LicensePage.tsx | 2 +- frontend/src/features/branding/pages/BrandingPage.tsx | 2 +- frontend/src/features/compliance/pages/CompliancePage.tsx | 2 +- .../src/features/dashboard/components/VisualizationEditor.tsx | 2 +- frontend/src/features/dashboard/pages/DashboardPage.tsx | 2 +- .../src/features/dashboard/pages/VisualizationListPage.tsx | 2 +- .../src/features/data-processing/pages/DataProcessingPage.tsx | 2 +- frontend/src/features/datasources/pages/DataSourcesPage.tsx | 2 +- .../features/federation/components/FederationAdminLayout.tsx | 2 +- frontend/src/features/federation/pages/FederationTeamPage.tsx | 2 +- frontend/src/features/home/pages/HomePage.tsx | 2 +- frontend/src/features/incidents/pages/IncidentsPage.tsx | 2 +- frontend/src/features/integrations/pages/IntegrationsPage.tsx | 2 +- .../src/features/notifications/pages/NotificationsPage.tsx | 2 +- .../src/features/parsing-filters/pages/ParsingFiltersPage.tsx | 2 +- frontend/src/features/profile/pages/ProfilePage.tsx | 2 +- .../src/features/regex-patterns/pages/RegexPatternsPage.tsx | 2 +- frontend/src/features/settings/pages/AboutPage.tsx | 2 +- frontend/src/features/settings/pages/ConnectionKeyPage.tsx | 2 +- frontend/src/features/settings/pages/DataRetentionPage.tsx | 2 +- frontend/src/features/settings/pages/DateFormatPage.tsx | 2 +- .../src/features/settings/pages/EmailConfigurationPage.tsx | 2 +- .../src/features/settings/pages/IdentityProvidersPage.tsx | 4 ++-- frontend/src/features/settings/pages/IndicesPage.tsx | 2 +- frontend/src/features/settings/pages/LanguagePage.tsx | 2 +- frontend/src/features/settings/pages/SocAiSettingsPage.tsx | 2 +- frontend/src/features/soar/pages/FlowsPage.tsx | 2 +- frontend/src/features/team/pages/TeamPage.tsx | 2 +- frontend/src/features/threat-intel/pages/ThreatIntelPage.tsx | 2 +- frontend/src/features/user-auditor/pages/UserAuditorPage.tsx | 2 +- 35 files changed, 36 insertions(+), 36 deletions(-) diff --git a/frontend/src/features/adversaries/pages/AdversariesPage.tsx b/frontend/src/features/adversaries/pages/AdversariesPage.tsx index baed2637f..c5e087ec9 100644 --- a/frontend/src/features/adversaries/pages/AdversariesPage.tsx +++ b/frontend/src/features/adversaries/pages/AdversariesPage.tsx @@ -45,7 +45,7 @@ export function AdversariesPage() { const visibleItems = filtered.slice(0, visible) return ( -
+
diff --git a/frontend/src/features/alerting-rules/pages/AlertingRulesPage.tsx b/frontend/src/features/alerting-rules/pages/AlertingRulesPage.tsx index ffa3ca4ae..ff88673bc 100644 --- a/frontend/src/features/alerting-rules/pages/AlertingRulesPage.tsx +++ b/frontend/src/features/alerting-rules/pages/AlertingRulesPage.tsx @@ -175,7 +175,7 @@ export function AlertingRulesPage() { } return ( -
+
diff --git a/frontend/src/features/alerts/pages/AlertsPage.tsx b/frontend/src/features/alerts/pages/AlertsPage.tsx index 818209403..d5ba8664b 100644 --- a/frontend/src/features/alerts/pages/AlertsPage.tsx +++ b/frontend/src/features/alerts/pages/AlertsPage.tsx @@ -162,7 +162,7 @@ export function AlertsPage() { } return ( -
+
diff --git a/frontend/src/features/alerts/pages/TaggingRulesPage.tsx b/frontend/src/features/alerts/pages/TaggingRulesPage.tsx index 387db46ea..547f57ce4 100644 --- a/frontend/src/features/alerts/pages/TaggingRulesPage.tsx +++ b/frontend/src/features/alerts/pages/TaggingRulesPage.tsx @@ -137,7 +137,7 @@ export function TaggingRulesPage() { } return ( -
+
diff --git a/frontend/src/features/audit/pages/AuditPage.tsx b/frontend/src/features/audit/pages/AuditPage.tsx index bd17a9151..c990d6840 100644 --- a/frontend/src/features/audit/pages/AuditPage.tsx +++ b/frontend/src/features/audit/pages/AuditPage.tsx @@ -129,7 +129,7 @@ export function AuditPage() { })) return ( -
+
load(filters)} />
diff --git a/frontend/src/features/billing/pages/LicensePage.tsx b/frontend/src/features/billing/pages/LicensePage.tsx index e199f95ad..433c5fda7 100644 --- a/frontend/src/features/billing/pages/LicensePage.tsx +++ b/frontend/src/features/billing/pages/LicensePage.tsx @@ -40,7 +40,7 @@ export function LicensePage() { const showError = !license && error return ( -
+

diff --git a/frontend/src/features/branding/pages/BrandingPage.tsx b/frontend/src/features/branding/pages/BrandingPage.tsx index ce8979cf3..c41c5b4c3 100644 --- a/frontend/src/features/branding/pages/BrandingPage.tsx +++ b/frontend/src/features/branding/pages/BrandingPage.tsx @@ -93,7 +93,7 @@ export function BrandingPage() { } return ( -
+

diff --git a/frontend/src/features/compliance/pages/CompliancePage.tsx b/frontend/src/features/compliance/pages/CompliancePage.tsx index 59b83789e..eef9ed32f 100644 --- a/frontend/src/features/compliance/pages/CompliancePage.tsx +++ b/frontend/src/features/compliance/pages/CompliancePage.tsx @@ -34,7 +34,7 @@ export function CompliancePage() { const [tab, setTab] = useState('frameworks') return ( -
+
setTab('frameworks')} icon={ShieldCheck} label={t('compliance.tabs.frameworks')} /> diff --git a/frontend/src/features/dashboard/components/VisualizationEditor.tsx b/frontend/src/features/dashboard/components/VisualizationEditor.tsx index 6915360c4..cc321bfdc 100644 --- a/frontend/src/features/dashboard/components/VisualizationEditor.tsx +++ b/frontend/src/features/dashboard/components/VisualizationEditor.tsx @@ -180,7 +180,7 @@ export function VisualizationEditor({ initial, initialChartType }: Visualization } return ( -
+

diff --git a/frontend/src/features/dashboard/pages/DashboardPage.tsx b/frontend/src/features/dashboard/pages/DashboardPage.tsx index 07f36945f..2b439a3fe 100644 --- a/frontend/src/features/dashboard/pages/DashboardPage.tsx +++ b/frontend/src/features/dashboard/pages/DashboardPage.tsx @@ -320,7 +320,7 @@ export function DashboardPage() { previewDashboard != null && !previewDashboard.systemOwner && !editor.editing return ( -
+
{inPreview && previewDashboard && ( +
+
+ {onCreateRule && ( + + )}
)} {pending && ( From cd19b83ad6447a581cf17206713d5961ad820e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Wed, 1 Jul 2026 16:45:12 -0600 Subject: [PATCH 3/3] fix[frontend](incident): added alerts navigation on incident alerts click --- frontend/src/app/routes/index.tsx | 1 + .../src/features/alerts/pages/AlertsPage.tsx | 29 ++++++++++++++++++- .../components/incident-alerts-tab.tsx | 5 ++-- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/routes/index.tsx b/frontend/src/app/routes/index.tsx index 6412f0e88..d7621d67d 100644 --- a/frontend/src/app/routes/index.tsx +++ b/frontend/src/app/routes/index.tsx @@ -105,6 +105,7 @@ export function AppRoutes() { } /> } /> } /> + } /> } /> } /> diff --git a/frontend/src/features/alerts/pages/AlertsPage.tsx b/frontend/src/features/alerts/pages/AlertsPage.tsx index d5ba8664b..0cecccb00 100644 --- a/frontend/src/features/alerts/pages/AlertsPage.tsx +++ b/frontend/src/features/alerts/pages/AlertsPage.tsx @@ -1,6 +1,6 @@ import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react' import { AlertTriangle, Loader2 } from 'lucide-react' -import { useLocation, useNavigate } from 'react-router-dom' +import { useLocation, useNavigate, useParams } from 'react-router-dom' import { useTranslation } from 'react-i18next' import { Button } from '@/shared/components/ui/button' import { InfiniteScrollSentinel } from '@/shared/components/ui/infinite-scroll' @@ -65,7 +65,25 @@ export function AlertsPage() { // SOC-AI chat navigation: seed the filters + time window the agent emitted. const location = useLocation() const navigate = useNavigate() + const { id: routeAlertName } = useParams<{ id: string }>() + const pendingOpenNameRef = useRef(null) const seededRef = useRef(false) + + // Deep-link (/threat-management/alerts/:alertName): seed as name filter + open drawer once loaded. + useEffect(() => { + if (!routeAlertName) return + const decoded = decodeURIComponent(routeAlertName) + pendingOpenNameRef.current = decoded + setCustomFilters((c) => + c.some((f) => f.field === 'name' && f.value === decoded) + ? c + : [...c, { field: 'name', label: 'name', operator: 'IS', value: decoded }], + ) + setPage(0) + // Drop the name from the URL so future edits to filters aren't fought by re-seeding. + navigate('/threat-management/alerts', { replace: true }) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [routeAlertName]) useEffect(() => { const state = location.state as { socaiFilters?: FilterType[]; socaiTime?: string } | null if (!state?.socaiFilters?.length || seededRef.current) return @@ -117,6 +135,15 @@ export function AlertsPage() { }, [scopeFilters, statusTab, severity]) const { alerts, total, loading, error, refresh: refreshList } = useAlertsList(page, pageSize, listFilters) + + useEffect(() => { + const name = pendingOpenNameRef.current + if (!name) return + const match = alerts.find((a) => a.name === name) + if (!match) return + pendingOpenNameRef.current = null + setOpenAlert(match) + }, [alerts]) const { sevCounts, statusCounts, timeline, openCount, refresh: refreshStats } = useAlertStats(scopeFilters, range.interval) const { tagCatalog, createTag, updateTag, deleteTag } = useAlertTagCatalog((deletedName) => setTagFilter((tf) => tf.filter((tn) => tn !== deletedName)) diff --git a/frontend/src/features/incidents/components/incident-alerts-tab.tsx b/frontend/src/features/incidents/components/incident-alerts-tab.tsx index 5c2448239..b84b43f42 100644 --- a/frontend/src/features/incidents/components/incident-alerts-tab.tsx +++ b/frontend/src/features/incidents/components/incident-alerts-tab.tsx @@ -15,7 +15,8 @@ export function IncidentAlertsTab({ incidentId, onChanged }: { incidentId: numbe return (
{rows.map((a) => ( -
@@ -38,7 +39,7 @@ export function IncidentAlertsTab({ incidentId, onChanged }: { incidentId: numbe > -
+ ))}
)