@redsift/products 12.5.1 → 12.5.2-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"signal-cards.js","sources":["../../src/components/signal-cards/components/ErrorBoundary/SignalCardErrorBoundary.tsx","../../src/components/signal-cards/cards/SignalCardList/RecommendationsSummary.types.ts","../../src/components/signal-cards/cards/SignalCardList/RecommendationsSummary.styles.tsx","../../src/components/signal-cards/cards/SignalCardList/RecommendationsSummary.tsx","../../src/components/signal-cards/cards/SignalCardAmp/SignalCardAmp.tsx","../../src/components/signal-cards/cards/SignalCardDkim/SignalCardDkim.tsx","../../src/components/signal-cards/constants/constants.ts","../../src/components/signal-cards/cards/SignalCardDkimDomainAnalyzer/styles.ts","../../src/components/signal-cards/cards/SignalCardDkimDomainAnalyzer/SignalCardDkimDomainAnalyzer.tsx","../../src/components/signal-cards/cards/SignalCardDmarc/DmarcSummaryBoxes.tsx","../../src/components/signal-cards/cards/SignalCardDmarc/SignalCardDmarc.tsx","../../src/components/signal-cards/cards/SignalCardDnssec/SignalCardDnssec.tsx","../../src/components/signal-cards/cards/SignalCardFcrdns/SignalCardFcrdns.tsx","../../src/components/signal-cards/cards/SignalCardGoogleYahooCompliance/styles.ts","../../src/components/signal-cards/cards/SignalCardGoogleYahooCompliance/SignalCardGoogleYahooCompliance.tsx","../../src/components/signal-cards/cards/SignalCardMtaSts/SignalCardMtaSts.tsx","../../src/components/signal-cards/cards/SignalCardSpf/SignalCardSpf.tsx","../../src/components/signal-cards/cards/SignalCardSpfDomainAnalyzer/SignalCardSpfDomainAnalyzer.tsx","../../src/components/signal-cards/cards/SignalCardSubdo/SignalCardSubdo.tsx","../../src/components/signal-cards/cards/SignalCardThreatInv/SignalCardThreatInv.tsx","../../src/components/signal-cards/cards/SignalCardTls/SignalCardTls.tsx","../../src/components/signal-cards/cards/SignalCardUrls/SignalCardUrls.tsx","../../src/components/signal-cards/cards/SignalCardList/styles.tsx","../../src/components/signal-cards/cards/SignalCardList/helpers.tsx","../../src/components/signal-cards/cards/SignalCardList/SignalCardList.tsx","../../src/components/signal-cards/index.ts"],"sourcesContent":["import React, { Component, type ReactNode, type ErrorInfo } from 'react';\nimport styled from 'styled-components';\nimport { signalCardsLogger } from '../../utils/logger';\n\n/**\n * Props for the SignalCardErrorBoundary component\n */\nexport interface SignalCardErrorBoundaryProps {\n /** Children components to wrap */\n children: ReactNode;\n /** Optional signal type for error context */\n signalType?: string;\n /** Optional custom fallback component */\n fallback?: ReactNode;\n /** Optional callback when error is caught */\n onError?: (error: Error, errorInfo: ErrorInfo) => void;\n /**\n * Optional key to reset the error boundary.\n * When this key changes, the error boundary resets and attempts to re-render children.\n * Useful for retry mechanisms or when underlying data changes.\n */\n resetKey?: string | number;\n}\n\ninterface SignalCardErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nconst ErrorContainer = styled.div`\n padding: 1rem;\n border: 1px solid var(--redsift-color-status-danger-lighter, #fecaca);\n border-radius: 8px;\n background-color: var(--redsift-color-status-danger-lightest, #fef2f2);\n color: var(--redsift-color-status-danger-darker, #991b1b);\n`;\n\nconst ErrorTitle = styled.h4`\n margin: 0 0 0.5rem 0;\n font-size: 14px;\n font-weight: 600;\n`;\n\nconst ErrorMessage = styled.p`\n margin: 0;\n font-size: 12px;\n opacity: 0.8;\n`;\n\n/**\n * Error boundary component for Signal Cards.\n *\n * Catches errors in signal card rendering and displays a user-friendly fallback\n * instead of crashing the entire UI. Logs errors to help with debugging.\n *\n * @example\n * ```tsx\n * <SignalCardErrorBoundary signalType=\"dmarc\">\n * <SignalCardDmarc data={data} />\n * </SignalCardErrorBoundary>\n * ```\n *\n * @example Reset on data change\n * ```tsx\n * <SignalCardErrorBoundary signalType=\"dmarc\" resetKey={data.id}>\n * <SignalCardDmarc data={data} />\n * </SignalCardErrorBoundary>\n * ```\n */\nexport class SignalCardErrorBoundary extends Component<SignalCardErrorBoundaryProps, SignalCardErrorBoundaryState> {\n constructor(props: SignalCardErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): SignalCardErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidUpdate(prevProps: SignalCardErrorBoundaryProps): void {\n // Reset error state when resetKey changes\n if (this.state.hasError && prevProps.resetKey !== this.props.resetKey) {\n this.setState({ hasError: false, error: null });\n }\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n const { signalType, onError } = this.props;\n\n signalCardsLogger.error(\n `SignalCard rendering error${signalType ? ` for ${signalType}` : ''}:`,\n error,\n errorInfo.componentStack\n );\n\n onError?.(error, errorInfo);\n }\n\n render(): ReactNode {\n const { hasError, error } = this.state;\n const { children, fallback, signalType } = this.props;\n\n if (hasError) {\n if (fallback) {\n return fallback;\n }\n\n return (\n <ErrorContainer role=\"alert\">\n <ErrorTitle>Unable to display {signalType ? `${signalType.toUpperCase()} ` : ''}signal card</ErrorTitle>\n <ErrorMessage>{error?.message || 'An unexpected error occurred while rendering this card.'}</ErrorMessage>\n </ErrorContainer>\n );\n }\n\n return children;\n }\n}\n\nexport default SignalCardErrorBoundary;\n","/**\n * Types and constants for the RecommendationsSummary component.\n */\n\nimport type { RecommendationsData } from '../../types/recommendations';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/** Structured data for the CTA card */\nexport interface CTAData {\n /** CTA heading (e.g. \"Get full protection with OnDMARC\") */\n title: string;\n /** CTA body text */\n description: string;\n /** Button label */\n buttonLabel: string;\n /** Callback when the button is clicked */\n onClickCTA: () => void;\n}\n\nexport interface RecommendationsSummaryProps {\n /** AI recommendations data */\n recommendations?: RecommendationsData | null;\n /** Whether recommendations are loading */\n loading?: boolean;\n /** Structured CTA data for the call-to-action card */\n cta?: CTAData;\n /** Callback when user clicks \"See more details\" on a status card */\n onExpandSignalCard?: (signalType: string) => void;\n}\n\n/**\n * Status values matching signal-logic's CardStatus union.\n * Includes 'info' and 'unknown' in addition to the primary three.\n */\nexport type StatusType = 'good' | 'warning' | 'danger' | 'error' | 'not_configured' | 'info' | 'unknown';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/** The core three status card protocols, always shown in display order */\nexport const CORE_PROTOCOLS = ['dmarc', 'dkim', 'spf'] as const;\n\n/** Additional protocols rendered dynamically when present in signals */\nexport const OPTIONAL_PROTOCOLS = [\n 'tls',\n 'fcrdns',\n 'mta_sts',\n 'bimi',\n 'dnssec',\n 'urls',\n 'threat_intelligence',\n 'amp',\n 'subdo',\n 'google_yahoo_compliance',\n] as const;\n\n/** Translation keys for protocol labels (lookup by protocol name) */\nexport const PROTOCOL_LABEL_KEYS: Record<string, string> = {\n dmarc: 'recommendations.protocol-dmarc',\n spf: 'recommendations.protocol-spf',\n dkim: 'recommendations.protocol-dkim',\n tls: 'recommendations.protocol-tls',\n fcrdns: 'recommendations.protocol-fcrdns',\n mta_sts: 'recommendations.protocol-mta-sts',\n bimi: 'recommendations.protocol-bimi',\n dnssec: 'recommendations.protocol-dnssec',\n urls: 'recommendations.protocol-urls',\n threat_intelligence: 'recommendations.protocol-threat-intelligence',\n amp: 'recommendations.protocol-amp',\n subdo: 'recommendations.protocol-subdo',\n google_yahoo_compliance: 'recommendations.protocol-google-yahoo-compliance',\n};\n\n/** Analysis keys rendered as bullet points, in order */\nexport const ANALYSIS_KEYS = ['posture', 'impact', 'recommended_action'] as const;\n\n/** Colors for status types */\nexport const STATUS_COLORS: Record<StatusType, string> = {\n danger: '#d90f47',\n warning: '#f7c948',\n good: '#26a69b',\n error: '#d90f47',\n not_configured: '#8e8e9a',\n info: '#2f6ed6',\n unknown: 'rgba(27, 29, 31, 0.45)',\n};\n","/**\n * Styled components and visual helpers for RecommendationsSummary.\n */\n\nimport React from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport type { StatusType } from './RecommendationsSummary.types';\nimport { STATUS_COLORS } from './RecommendationsSummary.types';\n\n// ============================================================================\n// Animations\n// ============================================================================\n\nconst shimmer = keyframes`\n 0% { background-position: -200px 0; }\n 100% { background-position: calc(200px + 100%) 0; }\n`;\n\nconst spin = keyframes`\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n`;\n\n// ============================================================================\n// Layout\n// ============================================================================\n\nconst BREAKPOINT_MOBILE = '937px';\nconst BREAKPOINT_STACK = '980px';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 35px;\n width: 100%;\n box-sizing: border-box;\n padding: 0 48px 48px;\n\n @media (max-width: ${BREAKPOINT_STACK}) {\n padding: 0 24px 24px;\n }\n`;\n\nexport const ContentLayout = styled.div`\n display: flex;\n gap: 48px;\n width: 100%;\n align-items: center;\n\n @media (max-width: ${BREAKPOINT_STACK}) {\n flex-direction: column;\n gap: 24px;\n }\n`;\n\n// ============================================================================\n// Analysis Column (left)\n// ============================================================================\n\nexport const AnalysisColumn = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n\n @media (max-width: ${BREAKPOINT_STACK}) {\n width: 100%;\n }\n`;\n\nexport const AnalysisCard = styled.div`\n border: 1px solid rgba(155, 146, 244, 0.58);\n border-radius: 8px;\n height: 100%;\n position: relative;\n`;\n\nexport const AnalysisCardInner = styled.div`\n background: rgba(255, 255, 255, 0.87);\n backdrop-filter: blur(7.5px);\n border-radius: 8px;\n padding: 16px 0;\n display: flex;\n flex-direction: column;\n gap: 16px;\n height: 100%;\n justify-content: center;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n padding: 16px 0;\n gap: 12px;\n }\n`;\n\nexport const AnalysisHeader = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 24px 0 26px;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n padding: 0 12px;\n }\n`;\n\nexport const AnalysisTitle = styled.div`\n font-family: var(--sc-font-heading, 'Space Grotesk', sans-serif);\n font-size: 18px;\n font-weight: 700;\n line-height: 1.5;\n letter-spacing: 1px;\n color: var(--redsift-color-red-700, #d90f47);\n text-transform: uppercase;\n`;\n\nexport const AIBadge = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n & img {\n display: block;\n width: 30px;\n height: 31px;\n }\n`;\n\nexport const BulletList = styled.ul`\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 0 24px 0 26px;\n margin: 0;\n list-style: none;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n padding: 0 12px 0 12px;\n }\n`;\n\nexport const BulletItem = styled.li`\n display: flex;\n align-items: flex-start;\n gap: 18px;\n`;\n\nexport const Bullet = styled.span`\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--redsift-color-red-700, #d90f47);\n flex-shrink: 0;\n margin-top: 8px;\n`;\n\nexport const BulletText = styled.span`\n font-family: var(--sc-font-body, 'Open Sans', sans-serif);\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: var(--sc-text-color, #333333);\n flex: 1;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n font-size: 14px;\n }\n`;\n\nexport const CTASlot = styled.div`\n margin: 8px 24px 0 26px;\n background: linear-gradient(\n 81.97deg,\n rgba(237, 21, 83, 0.07) 2.5%,\n rgba(140, 101, 255, 0.07) 51%,\n rgba(107, 183, 255, 0.07) 100%\n ),\n linear-gradient(90deg, #fff 0%, #fff 100%);\n background-image: linear-gradient(to top, #f2f7ff, #f7f1ff 52.4%, #f7ecf3);\n border: 1px solid #cce7fd;\n border-radius: 8px;\n box-shadow: 2px 3px 4px 0px rgba(217, 227, 255, 0.47), -3px 3px 14.4px 0px rgba(218, 236, 253, 0.84);\n padding: 16px 26px 24px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n overflow: clip;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n padding: 12px 16px;\n margin: 8px 12px 0;\n }\n`;\n\nexport const CTATextContent = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n\nexport const CTATitle = styled.span`\n font-family: var(--sc-font-heading, 'Space Grotesk', sans-serif);\n font-size: 20px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--sc-text-darkest, #2a2949);\n`;\n\nexport const CTADescription = styled.span`\n font-family: var(--sc-font-body, 'Open Sans', sans-serif);\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: var(--sc-text-color, #2a2949);\n`;\n\nexport const CTAButtonWrapper = styled.div`\n flex-shrink: 0;\n`;\n\nexport const CTAButton = styled.button`\n background: var(\n --redsift-color-light-components-website-buttons-primary-website-button-primary-background-default,\n #63224a\n );\n color: white;\n border: none;\n border-radius: 5px;\n padding: 13px 20px;\n font-family: var(--sc-font-heading, 'Space Grotesk', sans-serif);\n font-size: 18px;\n font-weight: 500;\n line-height: 1.5;\n letter-spacing: 0.18px;\n cursor: pointer;\n white-space: nowrap;\n transition: background-color 200ms ease-out;\n\n &:hover {\n background: var(\n --redsift-color-light-components-website-buttons-primary-website-button-primary-background-hover,\n #52184d\n );\n }\n`;\n\n// ============================================================================\n// Status Column (right)\n// ============================================================================\n\nexport const StatusColumn = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n justify-content: center;\n\n @media (max-width: ${BREAKPOINT_STACK}) {\n width: 100%;\n }\n`;\n\nexport const StatusCard = styled.div<{ $status: StatusType }>`\n background: white;\n border-left: 5px solid ${({ $status }) => STATUS_COLORS[$status] || STATUS_COLORS.danger};\n border-radius: 5px;\n padding: 16px 24px;\n display: flex;\n align-items: center;\n gap: 26px;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n`;\n\nexport const StatusHeader = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100px;\n flex-shrink: 0;\n`;\n\nexport const StatusIconWrapper = styled.div<{ $status: StatusType }>`\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: ${({ $status }) => STATUS_COLORS[$status] || STATUS_COLORS.danger};\n`;\n\nexport const StatusLabel = styled.div`\n font-family: var(--sc-font-heading, 'Space Grotesk', sans-serif);\n font-size: 20px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--sc-text-color, #333333);\n white-space: nowrap;\n`;\n\nexport const StatusContent = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n`;\n\nexport const StatusMessage = styled.div`\n font-family: var(--sc-font-body, 'Open Sans', sans-serif);\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: var(--sc-text-muted, #525252);\n`;\n\nexport const DetailsLink = styled.button`\n background: none;\n border: none;\n padding: 0;\n font-family: var(--sc-font-body, 'Open Sans', sans-serif);\n font-size: 16px;\n font-weight: 400;\n color: var(--sc-link-color, #4285f4);\n cursor: pointer;\n margin-top: 8px;\n text-align: left;\n width: fit-content;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n\n// ============================================================================\n// Loading Skeleton\n// ============================================================================\n\nexport const SkeletonContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 0 0 0 21px;\n width: 100%;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n padding: 0 0 0 8px;\n }\n`;\n\nexport const SkeletonLoadingHeader = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 0 8px 0;\n`;\n\nexport const SkeletonSpinner = styled.div`\n width: 16px;\n height: 16px;\n border: 2px solid #e8e8ec;\n border-top: 2px solid #d90f47;\n border-radius: 50%;\n animation: ${spin} 1s linear infinite;\n`;\n\nexport const SkeletonLoadingText = styled.span`\n font-family: var(--sc-font-body, 'Open Sans', sans-serif);\n font-size: 12px;\n color: var(--redsift-color-neutral-dark-grey, #69697e);\n font-style: italic;\n`;\n\nexport const SkeletonRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 18px;\n`;\n\nexport const SkeletonBullet = styled.div`\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: linear-gradient(90deg, #e8e8ec 0%, #f4f4f6 50%, #e8e8ec 100%);\n background-size: 200px 100%;\n animation: ${shimmer} 1.5s ease-in-out infinite;\n flex-shrink: 0;\n margin-top: 6px;\n`;\n\nexport const SkeletonLine = styled.div<{ $width?: string }>`\n height: 16px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e8e8ec 0%, #f4f4f6 50%, #e8e8ec 100%);\n background-size: 200px 100%;\n animation: ${shimmer} 1.5s ease-in-out infinite;\n width: ${({ $width }) => $width || '100%'};\n`;\n\nexport const SkeletonStatusCard = styled.div`\n background: white;\n border-left: 5px solid #e8e8ec;\n border-radius: 5px;\n padding: 16px 24px;\n display: flex;\n align-items: center;\n gap: 26px;\n`;\n\nexport const SkeletonStatusLabel = styled.div`\n width: 60px;\n height: 24px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e8e8ec 0%, #f4f4f6 50%, #e8e8ec 100%);\n background-size: 200px 100%;\n animation: ${shimmer} 1.5s ease-in-out infinite;\n`;\n\nexport const SkeletonStatusMessage = styled.div`\n flex: 1;\n height: 16px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e8e8ec 0%, #f4f4f6 50%, #e8e8ec 100%);\n background-size: 200px 100%;\n animation: ${shimmer} 1.5s ease-in-out infinite;\n`;\n\n// ============================================================================\n// Status Icons (inline SVGs)\n// ============================================================================\n\nconst DangerIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path d=\"M10 6V10\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <path d=\"M10 14H10.01\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport const WarningIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 2L2.5 17H17.5L10 2Z\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinejoin=\"round\" />\n <path d=\"M10 8V12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <path d=\"M10 14.5V14.51\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst GoodIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 10C18 14.4183 14.4183 18 10 18C5.58172 18 2 14.4183 2 10C2 5.58172 5.58172 2 10 2C14.4183 2 18 5.58172 18 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path d=\"M7 10L9 12L13 8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst InfoIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path d=\"M10 14V10\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <path d=\"M10 6H10.01\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst UnknownIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M7.5 7.5C7.5 6.12 8.62 5 10 5C11.38 5 12.5 6.12 12.5 7.5C12.5 8.88 11.38 10 10 10V11\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M10 14H10.01\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst ErrorIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path d=\"M13 7L7 13\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <path d=\"M7 7L13 13\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst NotConfiguredIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeDasharray=\"4 3\"\n />\n <path d=\"M7 10H13\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\n/**\n * Returns the appropriate status icon for a given StatusType.\n * Handles all five canonical statuses (good, warning, danger, info, unknown).\n */\nexport const getStatusIcon = (status: StatusType): React.ReactNode => {\n switch (status) {\n case 'good':\n return <GoodIcon />;\n case 'warning':\n return <WarningIcon />;\n case 'danger':\n return <DangerIcon />;\n case 'error':\n return <ErrorIcon />;\n case 'not_configured':\n return <NotConfiguredIcon />;\n case 'info':\n return <InfoIcon />;\n case 'unknown':\n return <UnknownIcon />;\n default:\n return <DangerIcon />;\n }\n};\n","/**\n * RecommendationsSummary Component\n *\n * Renders AI-powered recommendations inside SignalCardList:\n * - Analysis bullets (posture, impact, recommended_action)\n * - Status cards for core protocols (DMARC, DKIM, SPF) plus any optional protocols present\n * - CTA card with title, description, and button\n * - Loading skeleton when recommendationsLoading is true\n */\n\nimport React from 'react';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport aiBadgeSvg from '../../assets/ai-badge.svg';\n\nimport type { RecommendationsSummaryProps, StatusType } from './RecommendationsSummary.types';\nimport { CORE_PROTOCOLS, PROTOCOL_LABEL_KEYS, ANALYSIS_KEYS } from './RecommendationsSummary.types';\nimport {\n Container,\n ContentLayout,\n AnalysisColumn,\n AnalysisCard,\n AnalysisCardInner,\n AnalysisHeader,\n AnalysisTitle,\n AIBadge,\n BulletList,\n BulletItem,\n Bullet,\n BulletText,\n CTASlot,\n CTATextContent,\n CTATitle,\n CTADescription,\n CTAButtonWrapper,\n CTAButton,\n StatusColumn,\n StatusCard,\n StatusHeader,\n StatusIconWrapper,\n StatusLabel,\n StatusContent,\n StatusMessage,\n DetailsLink,\n SkeletonContainer,\n SkeletonLoadingHeader,\n SkeletonSpinner,\n SkeletonLoadingText,\n SkeletonRow,\n SkeletonBullet,\n SkeletonLine,\n SkeletonStatusCard,\n SkeletonStatusLabel,\n SkeletonStatusMessage,\n WarningIcon,\n getStatusIcon,\n} from './RecommendationsSummary.styles';\n\nexport type { RecommendationsSummaryProps, StatusType };\n\n// ============================================================================\n// Loading Skeleton Sub-component\n// ============================================================================\n\nconst LoadingSkeleton: React.FC = () => {\n const { t } = useSignalCardTranslation('investigate');\n\n return (\n <Container data-testid=\"recommendations-summary-loading\">\n <ContentLayout>\n <AnalysisColumn>\n <AnalysisCard>\n <AnalysisCardInner>\n <AnalysisHeader>\n <AnalysisTitle>{t('recommendations.title')}</AnalysisTitle>\n <AIBadge>\n <img src={aiBadgeSvg} alt={t('recommendations.ai-badge')} />\n </AIBadge>\n </AnalysisHeader>\n <SkeletonContainer>\n <SkeletonLoadingHeader>\n <SkeletonSpinner />\n <SkeletonLoadingText>{t('recommendations.loading-text')}</SkeletonLoadingText>\n </SkeletonLoadingHeader>\n {[90, 80, 70].map((w) => (\n <SkeletonRow key={w}>\n <SkeletonBullet />\n <SkeletonLine $width={`${w}%`} />\n </SkeletonRow>\n ))}\n </SkeletonContainer>\n </AnalysisCardInner>\n </AnalysisCard>\n </AnalysisColumn>\n <StatusColumn>\n {CORE_PROTOCOLS.map((protocol) => (\n <SkeletonStatusCard key={protocol}>\n <SkeletonStatusLabel />\n <SkeletonStatusMessage />\n </SkeletonStatusCard>\n ))}\n </StatusColumn>\n </ContentLayout>\n </Container>\n );\n};\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\nexport const RecommendationsSummary: React.FC<RecommendationsSummaryProps> = ({\n recommendations,\n loading = false,\n cta,\n onExpandSignalCard,\n}) => {\n const { t } = useSignalCardTranslation('investigate');\n\n // Loading state\n if (loading) {\n return <LoadingSkeleton />;\n }\n\n // No data, don't render\n if (!recommendations) {\n return null;\n }\n\n const { analysis, signals } = recommendations;\n\n // Collect non-empty analysis bullet points\n const analysisItems = ANALYSIS_KEYS.map((key) => ({\n key,\n text: analysis?.[key],\n })).filter(({ text }) => !!text);\n\n return (\n <Container data-testid=\"recommendations-summary\">\n <ContentLayout>\n {/* Left: AI Analysis + CTA */}\n <AnalysisColumn>\n <AnalysisCard>\n <AnalysisCardInner>\n <AnalysisHeader>\n <AnalysisTitle>{t('recommendations.title')}</AnalysisTitle>\n <AIBadge>\n <img src={aiBadgeSvg} alt={t('recommendations.ai-badge')} />\n </AIBadge>\n </AnalysisHeader>\n {analysisItems.length > 0 && (\n <BulletList>\n {analysisItems.map(({ key, text }) => (\n <BulletItem key={key}>\n <Bullet />\n <BulletText>{text}</BulletText>\n </BulletItem>\n ))}\n </BulletList>\n )}\n {cta && (\n <CTASlot>\n <CTATextContent>\n <CTATitle>{cta.title}</CTATitle>\n <CTADescription>{cta.description}</CTADescription>\n </CTATextContent>\n <CTAButtonWrapper>\n <CTAButton type=\"button\" onClick={cta.onClickCTA}>\n {cta.buttonLabel}\n </CTAButton>\n </CTAButtonWrapper>\n </CTASlot>\n )}\n </AnalysisCardInner>\n </AnalysisCard>\n </AnalysisColumn>\n\n {/* Right: Status Cards */}\n <StatusColumn>\n {CORE_PROTOCOLS.map((protocol) => {\n const signalData = signals?.[protocol];\n const protocolLabel = t(PROTOCOL_LABEL_KEYS[protocol]);\n\n if (!signalData) {\n return (\n <StatusCard key={protocol} $status=\"warning\">\n <StatusHeader>\n <StatusIconWrapper $status=\"warning\">\n <WarningIcon />\n </StatusIconWrapper>\n <StatusLabel>{protocolLabel}</StatusLabel>\n </StatusHeader>\n <StatusContent>\n <StatusMessage>{t('recommendations.no-data')}</StatusMessage>\n </StatusContent>\n </StatusCard>\n );\n }\n\n const status = signalData.status as StatusType;\n\n return (\n <StatusCard key={protocol} $status={status}>\n <StatusHeader>\n <StatusIconWrapper $status={status}>{getStatusIcon(status)}</StatusIconWrapper>\n <StatusLabel>{protocolLabel}</StatusLabel>\n </StatusHeader>\n <StatusContent>\n <StatusMessage>{signalData.summary}</StatusMessage>\n {onExpandSignalCard && (\n <DetailsLink onClick={() => onExpandSignalCard(protocol.toUpperCase())} type=\"button\">\n {t('recommendations.see-more-details')}\n </DetailsLink>\n )}\n </StatusContent>\n </StatusCard>\n );\n })}\n </StatusColumn>\n </ContentLayout>\n </Container>\n );\n};\n","import React, { forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\nimport type { CardStatus } from '@redsift/signal-logic';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { useCollapseController } from '../../hooks/useCollapseController';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { adaptAmpExtractor } from '../../adapters/extractor-adapter';\n\n// Re-export signal-logic functions for backward compatibility\nexport { getDkimAndSpfChecks } from '@redsift/signal-logic';\n\nimport type { SignalCardAmpProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardAmp';\nconst CLASSNAME = 'redsift-signal-card-amp';\n\n/**\n * SignalCardAmp Component\n *\n * Displays AMP (Authenticated Mail Protocol) compliance information including\n * SPF and DKIM authentication checks, and DKIM alignment status.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardAmp\n * jmap={jmapData}\n * onHeightChange={() => console.log('height changed')}\n * bannerVariant=\"standard\"\n * />\n * ```\n */\nexport const SignalCardAmp: Comp<SignalCardAmpProps, HTMLDivElement> = forwardRef<HTMLDivElement, SignalCardAmpProps>(\n function SignalCardAmp(props, ref) {\n const {\n className,\n onHeightChange,\n jmap,\n bannerVariant,\n renderFooter,\n useInvestigateColors = false,\n isCollapsible,\n areAllCollapsed,\n onCollapseAll,\n ...forwardedProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n const { spf, dmarc, dkim } = jmap.extsecrep;\n\n const {\n areAllCollapsed: resolvedAreAllCollapsed,\n handleCollapseAll,\n isCollapsible: resolvedIsCollapsible,\n } = useCollapseController({\n isCollapsible,\n areAllCollapsed,\n onCollapseAll,\n });\n\n const extData = useMemo(() => {\n if (!dmarc) return null;\n return adaptAmpExtractor({\n spf,\n dmarc,\n dkim: dkim as Record<string, unknown> | null | undefined,\n jmap,\n t,\n });\n }, [spf, dmarc, dkim, jmap, t]);\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = useMemo(() => {\n if (!dmarc || !extData) return [];\n const { infoItemsCategories, extractedItemsCategories } = extData;\n return [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extracted-items-${i}`,\n title: cat.title,\n testId: `amp-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `info-items-${i}`,\n title: cat.title,\n testId: `amp-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ];\n }, [dmarc, extData, useInvestigateColors, t]);\n\n if (!dmarc || !extData) {\n return null;\n }\n\n const { cardType } = extData as { cardType: CardStatus };\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n onHeightChange={onHeightChange}\n title=\"AMP\"\n type=\"AMP\"\n cardType={cardType}\n bannerVariant={bannerVariant}\n sections={sections}\n shortDescription={t('card.amp.desc-short')}\n longDescription={t('card.amp.desc-long')}\n renderFooter={renderFooter}\n isCollapsible={resolvedIsCollapsible}\n areAllCollapsed={resolvedAreAllCollapsed}\n onCollapseAll={handleCollapseAll}\n data-testid=\"signal-card-amp\"\n data-card-type={cardType}\n />\n );\n }\n);\n\nSignalCardAmp.displayName = COMPONENT_NAME;\nSignalCardAmp.className = CLASSNAME;\n","import React, { useState, useEffect, forwardRef, useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist, { ChecklistItem } from '../../components/ui/Checklist/Checklist';\nimport { adaptDkimExtractor } from '../../adapters/extractor-adapter';\nimport type { CardStatus } from '@redsift/signal-logic';\nimport type {\n InfoItem,\n ExtractedItemCategory,\n ExtractDataResult,\n DkimResult,\n ParsedDkimResult,\n SignalCardDkimProps,\n SignalCardDkimState,\n} from './types';\n\nconst COMPONENT_NAME = 'SignalCardDkim';\nconst CLASSNAME = 'redsift-signal-card-dkim';\n\nexport const SignalCardDkim: Comp<SignalCardDkimProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardDkimProps\n>(function SignalCardDkim(props, ref) {\n const { t } = useSignalCardTranslation('investigate');\n const {\n jmap,\n onHeightChange,\n useInvestigateColors,\n isCollapsible,\n areAllCollapsed: areAllCollapsedProp,\n onCollapseAll: onCollapseAllProp,\n className,\n ...rest\n } = props;\n\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const areAllCollapsed = areAllCollapsedProp !== undefined ? areAllCollapsedProp : internalCollapsed;\n const onCollapseAll = useCallback(\n (collapsed: boolean) => {\n setInternalCollapsed(collapsed);\n onCollapseAllProp?.(collapsed);\n },\n [onCollapseAllProp]\n );\n\n // Compute initial state synchronously to avoid flash of wrong cardType\n const computeInitialState = useMemo((): SignalCardDkimState => {\n const { dmarc = null, dkim = null } = jmap.extsecrep;\n\n const parsedResults: ParsedDkimResult[] = [];\n let initialIndex = 0;\n\n const addResult = (entry: DkimResult | null, idx: number) => {\n const parsed = adaptDkimExtractor(entry, t) as ExtractDataResult;\n const signerDomain = entry?.signature?.signerDomain ?? null;\n parsedResults.push({ ...parsed, signerDomain });\n\n if (dmarc?.dkimDomain && signerDomain === dmarc.dkimDomain) {\n initialIndex = idx;\n }\n };\n\n if (Array.isArray(dkim)) {\n dkim.forEach((entry, idx) => addResult(entry, idx));\n } else {\n addResult(dkim, 0);\n }\n\n const resultOptions = parsedResults.map((result, idx) => ({\n id: idx,\n label: result.signerDomain || 'Unknown',\n type: result.cardType,\n }));\n\n const initialResult = parsedResults[initialIndex] ?? parsedResults[0] ?? null;\n\n return {\n dkimResults: parsedResults,\n resultOptions,\n resultSelected: initialIndex,\n cardType: initialResult?.cardType ?? null,\n infoItems: initialResult?.infoItems ?? null,\n infoItemsCategoriesDkim: initialResult?.infoItemsCategoriesDkim ?? null,\n extractedItemsCategories: initialResult?.extractedItemsCategories ?? null,\n };\n }, [jmap, t]);\n\n const [state, setState] = useState<SignalCardDkimState>(computeInitialState);\n\n // Update state when jmap or t changes\n useEffect(() => {\n setState(computeInitialState);\n }, [computeInitialState]);\n\n const onResultsChange = (key: number) => {\n const { dkimResults } = state;\n const selected = dkimResults[key];\n\n if (!selected) {\n return;\n }\n\n setState((prev) => ({\n ...prev,\n resultSelected: key,\n cardType: selected.cardType as CardStatus | null,\n infoItems: selected.infoItems as InfoItem[] | null,\n infoItemsCategoriesDkim: selected.infoItemsCategoriesDkim as ExtractedItemCategory[] | null,\n extractedItemsCategories: selected.extractedItemsCategories as ExtractedItemCategory[] | null,\n }));\n\n setTimeout(() => {\n onHeightChange?.();\n }, 100);\n };\n\n const {\n resultSelected,\n resultOptions,\n cardType,\n // errorItems, // No longer passed to SignalCardNormal - prop removed\n extractedItemsCategories,\n infoItemsCategoriesDkim,\n } = state;\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extractedItems-${i}`,\n title: cat.title,\n testId: `dkim-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItemsCategoriesDkim?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `dkim-checklist-${i}`,\n content: <Checklist items={cat.items as ChecklistItem[]} />,\n })) || []),\n ];\n\n const sectionIds = sections.map((s) => s.id);\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n ref={ref as any}\n className={classNames(CLASSNAME, className)}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n resultOptions={resultOptions}\n optionsLabel={t('investigate:multiple-results-label-dkim')}\n resultSelected={resultSelected}\n onResultsChange={onResultsChange}\n title={'DKIM'}\n type=\"DKIM\"\n {...rest}\n cardType={cardType ?? 'unknown'}\n sections={sections}\n customSectionOrder={['resultOptions', 'introDescription', ...sectionIds]}\n data-testid=\"signal-card-dkim\"\n data-card-type={cardType ?? 'unknown'}\n />\n );\n});\n\nSignalCardDkim.className = CLASSNAME;\nSignalCardDkim.displayName = COMPONENT_NAME;\n","export const STATUS = Object.freeze({\n PASS: 'pass',\n WARNING: 'warning',\n FAIL: 'fail',\n ERROR: 'error',\n INFO: 'info',\n} as const);\n\nexport type StatusValue = typeof STATUS[keyof typeof STATUS];\n","import styled from 'styled-components';\n\nexport const SelectorSection = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n margin-bottom: 1.5rem;\n`;\n\nexport const NoSelectorsContainer = styled.div`\n p {\n font-size: 14px;\n line-height: 1.5;\n margin-bottom: 1rem;\n }\n`;\n","import React, { forwardRef, useMemo, useState, useCallback, useEffect, type ReactNode } from 'react';\nimport classNames from 'classnames';\nimport { useMultiNamespaceTranslation } from '../../hooks/useSignalCardTranslation';\nimport { mdiCheck, mdiClose, mdiAlert, mdiEmail, mdiArrowDownBold } from '@redsift/icons';\nimport { Flexbox, Icon, TextField } from '@redsift/design-system';\nimport type { Comp } from '@redsift/design-system';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { Select, Item } from '@redsift/pickers';\nimport { TooltipInPortalWrapper } from '../../components/ui/TooltipInPortal/TooltipInPortal';\nimport { STATUS } from '../../constants/constants';\nimport { DKIM_KEY } from '@redsift/signal-logic';\nimport { COLOR } from '../signal-card-styles';\nimport { parseGlossaryMarkdown } from '../../utils/parse-glossary-markdown';\nimport { adaptDomainAnalyzerDkimExtractor } from '../../adapters/extractor-adapter';\nimport type { CardStatus } from '@redsift/signal-logic';\nimport type {\n SignalCardDkimDomainAnalyzerProps,\n SelectorDropdownProps,\n DkimRecord,\n TranslationFn,\n} from './types';\nimport type { StatusValue } from '../../constants/constants';\nimport { SelectorSection, NoSelectorsContainer } from './styles';\n\nconst COMPONENT_NAME = 'SignalCardDkimDomainAnalyzer';\nconst CLASSNAME = 'redsift-signal-card-dkim-domain-analyzer';\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nexport const getCardType = (record?: DkimRecord | null): CardStatus => {\n // Check issues array first (matches legacy behavior)\n const statuses = record?.issues?.map((issue) => issue.status).filter(Boolean) as string[] | undefined;\n\n // Legacy: if (!statuses) return INFO - only when issues is null/undefined\n if (!statuses) {\n return 'unknown';\n }\n\n // With issues array (even empty), check for fail/warning\n // Note: legacy used record.key.k but API type uses record.records.k\n const keyType = record?.key?.k || record?.records?.k;\n const hasFail = statuses.includes('fail');\n const hasWarning =\n statuses.includes('warning') || (keyType === 'rsa' && (record?.keyStatus?.keySize ?? 0) < DKIM_KEY.VALID_LENGTH);\n\n if (hasFail) {\n return 'danger';\n }\n\n if (hasWarning) {\n return 'warning';\n }\n\n // Legacy returns GOOD when issues array exists but has no fail/warning\n return 'good';\n};\n\nexport const getStatusType = (record?: DkimRecord | null): StatusValue => {\n const cardType = getCardType(record);\n\n switch (cardType) {\n case 'good':\n return STATUS.PASS;\n case 'warning':\n return STATUS.WARNING;\n case 'danger':\n return STATUS.FAIL;\n default:\n return STATUS.INFO;\n }\n};\n\nconst buildNoSelectorContent = (t: TranslationFn): ReactNode => {\n const content = t('card.dkim.no-selectors-found_md', {\n returnObjects: true,\n }) as string | string[] | ReactNode;\n\n if (Array.isArray(content)) {\n const lines = content.filter((line): line is string => typeof line === 'string' && line.trim().length > 0);\n\n return (\n <NoSelectorsContainer>\n {lines.map((line, idx) => (\n <p key={idx}>{parseGlossaryMarkdown(line)}</p>\n ))}\n </NoSelectorsContainer>\n );\n }\n\n if (typeof content === 'string' && content.trim()) {\n return (\n <NoSelectorsContainer>\n <p>{parseGlossaryMarkdown(content)}</p>\n </NoSelectorsContainer>\n );\n }\n\n return (\n <NoSelectorsContainer>\n <p>{t('card.dkim.no-selectors-found_md')}</p>\n </NoSelectorsContainer>\n );\n};\n\n// ============================================================================\n// ============================================================================\n// Selector Dropdown Component\n// ============================================================================\n\nconst SelectorDropdown: React.FC<SelectorDropdownProps> = ({\n records,\n currentRecord,\n selectedRecordIndex,\n cardTypesSummary,\n onSelectChange,\n t,\n}) => {\n if (records.length === 1) {\n return (\n <SelectorSection>\n <Flexbox alignItems=\"center\" gap=\"0.5rem\">\n <span>{t('card.dkim.selector')}:</span>\n <code>{currentRecord.selector ?? ''}</code>\n </Flexbox>\n </SelectorSection>\n );\n }\n\n return (\n <SelectorSection>\n {/* Summary counts */}\n <Flexbox alignItems=\"center\" gap=\"64px\">\n {[STATUS.PASS, STATUS.WARNING, STATUS.FAIL].map((status) =>\n cardTypesSummary[status] ? (\n <TooltipInPortalWrapper\n key={status}\n message={t(`card.dkim.selector-statuses.${status}`, {\n count: cardTypesSummary[status] || 0,\n })}\n className=\"\"\n >\n <Flexbox alignItems=\"center\" gap=\"0.5rem\">\n {status === STATUS.PASS && <Icon icon={mdiCheck} color=\"#02ac61\" size=\"small\" />}\n {status === STATUS.WARNING && <Icon icon={mdiAlert} color=\"#ed6c02\" size=\"small\" />}\n {status === STATUS.FAIL && <Icon icon={mdiClose} color={COLOR.main.red} size=\"small\" />}\n <span>{cardTypesSummary[status]}</span>\n </Flexbox>\n </TooltipInPortalWrapper>\n ) : null\n )}\n </Flexbox>\n\n {/* Selector dropdown */}\n <Flexbox alignItems=\"center\" gap=\"0.5rem\">\n <span>{t('card.dkim.selector')}:</span>\n <Select value={String(selectedRecordIndex)} onChange={(value) => onSelectChange(Number(value))}>\n <Select.Trigger>\n {({ value }: { value?: string }) => {\n const idx = Number(value);\n const record = records[idx];\n const displayText = record.entry?.split('.')?.[0] ?? record.selector ?? '';\n return <TextField value={displayText} isReadOnly aria-label=\"DKIM Selector\" />;\n }}\n </Select.Trigger>\n <Select.Content>\n {records.map((record, idx) => (\n <Item key={String(idx)} value={String(idx)}>\n <Flexbox alignItems=\"center\" gap=\"0.5rem\">\n {getStatusType(record) === STATUS.PASS && <Icon icon={mdiCheck} color=\"#02ac61\" size=\"small\" />}\n {getStatusType(record) === STATUS.WARNING && <Icon icon={mdiAlert} color=\"#ed6c02\" size=\"small\" />}\n {getStatusType(record) === STATUS.FAIL && (\n <Icon icon={mdiClose} color={COLOR.main.red} size=\"small\" />\n )}\n <span>{record.entry?.split('.')?.[0] ?? record.selector ?? ''}</span>\n </Flexbox>\n </Item>\n ))}\n </Select.Content>\n </Select>\n </Flexbox>\n </SelectorSection>\n );\n};\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\n/**\n * SignalCardDkimDomainAnalyzer Component\n *\n * Advanced DKIM Domain Analyzer showing multiple DKIM selectors, key validation,\n * key sizes, algorithms, and detailed DNS records (CNAME and TXT).\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardDkimDomainAnalyzer\n * jmap={{ extsecrep: { dkim: { records: [...] } } }}\n * />\n * ```\n */\nexport const SignalCardDkimDomainAnalyzer: Comp<SignalCardDkimDomainAnalyzerProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardDkimDomainAnalyzerProps\n>(function SignalCardDkimDomainAnalyzer(props, ref) {\n const {\n className,\n jmap,\n onHeightChange,\n bannerVariant,\n useInvestigateColors = false,\n isCollapsible,\n areAllCollapsed: areAllCollapsedProp,\n onCollapseAll: onCollapseAllProp,\n ...forwardedProps\n } = props;\n\n const namespaces = ['investigate', 'statusDetails'];\n const { t } = useMultiNamespaceTranslation(namespaces);\n\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const areAllCollapsed = areAllCollapsedProp !== undefined ? areAllCollapsedProp : internalCollapsed;\n const onCollapseAll = useCallback(\n (collapsed: boolean) => {\n setInternalCollapsed(collapsed);\n onCollapseAllProp?.(collapsed);\n },\n [onCollapseAllProp]\n );\n\n const dmarc = jmap.extsecrep.dmarc;\n const dkim = jmap.extsecrep.dkim;\n\n // Delegate data extraction to signal-logic via adapter\n const adapterResult = useMemo(() => {\n if (!dkim) return null;\n return adaptDomainAnalyzerDkimExtractor(dkim as any, t, { domain: (dmarc as any)?.domain ?? '' });\n }, [dkim, t, dmarc]);\n\n const records = useMemo<DkimRecord[]>(() => {\n if (!dkim || !Array.isArray(dkim.records)) {\n return [];\n }\n\n return dkim.records.map((record) => {\n // Normalize selector from entry if missing\n const selector = record.selector ?? (record.entry ? record.entry.replace(/\\._domainkey.*$/, '') : null);\n\n return { ...record, selector };\n }) as DkimRecord[];\n }, [dkim?.records]);\n\n const [selectedRecordIndex, setSelectedRecordIndex] = useState<number>(0);\n const recordCount = records.length;\n\n useEffect(() => {\n if (!recordCount && selectedRecordIndex !== 0) {\n setSelectedRecordIndex(0);\n return;\n }\n\n const maxIndex = recordCount ? recordCount - 1 : 0;\n if (selectedRecordIndex > maxIndex) {\n setSelectedRecordIndex(maxIndex);\n }\n }, [recordCount, selectedRecordIndex]);\n\n const currentRecord = useMemo<DkimRecord | null>(() => {\n return records[selectedRecordIndex] ?? null;\n }, [records, selectedRecordIndex]);\n\n const currentCardType = useMemo<CardStatus>(() => getCardType(currentRecord), [currentRecord]);\n\n const cardTypesSummary = useMemo<Record<StatusValue, number>>(() => {\n return records.reduce((acc, record) => {\n const status = getStatusType(record);\n acc[status] = (acc[status] ?? 0) + 1;\n return acc;\n }, {} as Record<StatusValue, number>);\n }, [records]);\n\n // Handle no selectors case\n if (!records.length || !currentRecord) {\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title={'DKIM Selector'}\n type=\"DKIM\"\n cardType=\"info\" // Use info card type for no records, not unknown\n icon={\n bannerVariant === 'standard' ? (\n <Icon icon={mdiEmail} color={COLOR.main.white} size=\"xxlarge\" />\n ) : (\n <Icon icon={mdiEmail} color=\"#1976d2\" size=\"large\" />\n )\n }\n introDescription={buildNoSelectorContent(t)}\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n data-testid=\"signal-card-dkim-da\"\n data-card-type=\"info\"\n />\n );\n }\n\n // Get current selector data from signal-logic adapter\n const currentSelectorData = adapterResult?.selectorResults?.[selectedRecordIndex];\n\n // Post-process extracted items: inject arrow icon between CNAME/TXT, apply markdown to string labels\n const extractedItemsCategories = (currentSelectorData?.extractedItemsCategories ?? []).map((cat, catIdx) => {\n let items = (cat.items ?? []).map((item) => ({\n ...item,\n label: typeof item.label === 'string' ? parseGlossaryMarkdown(item.label) : item.label,\n }));\n\n // DNS Records category: inject arrow icon between CNAME and TXT (React-specific visual)\n if (catIdx === 0 && currentRecord.cname && items.length >= 2) {\n const withArrow = [...items];\n withArrow.splice(1, 0, {\n label: '' as any,\n text: <Icon margin=\"0 auto\" icon={mdiArrowDownBold} size={{ width: 24, height: 24 }} />,\n inline: false,\n });\n items = withArrow;\n }\n\n return { ...cat, items };\n });\n\n const infoItemsCategories = currentSelectorData?.infoItemsCategories ?? [];\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = [\n ...extractedItemsCategories\n .filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extractedItems-${i}`,\n title: cat.title,\n testId: `dkim-da-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })),\n ...infoItemsCategories.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `dkim-da-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })),\n ];\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title={'DKIM Selector'}\n type=\"DKIM\"\n cardType={currentCardType}\n sections={sections}\n introDescription={\n <SelectorDropdown\n records={records}\n currentRecord={currentRecord}\n selectedRecordIndex={selectedRecordIndex}\n cardTypesSummary={cardTypesSummary}\n onSelectChange={setSelectedRecordIndex}\n t={t}\n />\n }\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n data-testid=\"signal-card-dkim-da\"\n data-card-type={currentCardType}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n />\n );\n});\n\nSignalCardDkimDomainAnalyzer.displayName = COMPONENT_NAME;\nSignalCardDkimDomainAnalyzer.className = CLASSNAME;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Icon } from '@redsift/design-system';\nimport { mdiCheck, mdiClose, mdiAlert } from '@redsift/icons';\nimport type { DmarcProps } from '@redsift/signal-logic';\nimport type { BaseCardType } from '../../types/extractor';\nimport { FONT } from '../signal-card-styles';\n\nconst SAND = '#f5f2eb';\n\ntype BoxStatus = 'good' | 'danger' | 'warning';\n\nexport type EmailComplianceState = 'pass' | 'fail-both' | 'fail-dkim' | 'fail-spf' | 'none' | 'permerror' | 'temperror';\n\nexport type DomainPolicyState =\n | 'reject-full'\n | 'reject-full-sp-weak'\n | 'reject-partial'\n | 'reject-partial-sp-weak'\n | 'quarantine-full'\n | 'quarantine-full-sp-weak'\n | 'quarantine-partial'\n | 'quarantine-partial-sp-weak'\n | 'none'\n | 'no-record'\n | 'permerror'\n | 'temperror';\n\n/**\n * Determines the email compliance state from DMARC data.\n * Returns null when compliance cannot be determined (permerror, temperror, none).\n */\nexport function getEmailComplianceState(dmarc: DmarcProps | undefined): EmailComplianceState | null {\n if (!dmarc) return null;\n if (dmarc.result === 'pass') return 'pass';\n if (dmarc.result === 'fail') {\n if (!dmarc.alignDkim && !dmarc.alignSpf) return 'fail-both';\n if (!dmarc.alignDkim) return 'fail-dkim';\n return 'fail-spf';\n }\n // Subdomains may have result='none' (no own DMARC TXT record) but inherit\n // a policy from the organisational domain. When alignment data is available,\n // evaluate compliance based on it instead of returning 'none'.\n if (dmarc.result === 'none') {\n if (dmarc.policy) {\n if (dmarc.alignDkim || dmarc.alignSpf) return 'pass';\n if (dmarc.alignDkim === false && dmarc.alignSpf === false) return 'fail-both';\n if (dmarc.alignDkim === false) return 'fail-dkim';\n if (dmarc.alignSpf === false) return 'fail-spf';\n }\n return 'none';\n }\n if (dmarc.result === 'permerror') {\n // RFC 7489 §6.6.3: when rua is present, receivers fall back to p=none.\n // Compliance CAN be determined — evaluate alignment normally.\n const hasRua = Boolean(dmarc.policy?.rua?.length) || /(?:^|;\\s*)rua\\s*=\\s*mailto:/i.test(dmarc.raw ?? '');\n if (hasRua) {\n if (dmarc.alignDkim || dmarc.alignSpf) return 'pass';\n if (dmarc.alignDkim === false && dmarc.alignSpf === false) return 'fail-both';\n if (dmarc.alignDkim === false) return 'fail-dkim';\n if (dmarc.alignSpf === false) return 'fail-spf';\n }\n return 'permerror';\n }\n if (dmarc.result === 'temperror') return 'temperror';\n // Treat unexpected result values (neutral, policy, warning) as failures\n if (dmarc.result) return 'fail-both';\n return null;\n}\n\n/**\n * Determines the domain policy state from DMARC data.\n */\nexport function getDomainPolicyState(dmarc: DmarcProps | undefined): DomainPolicyState {\n if (!dmarc) return 'no-record';\n if (dmarc.result === 'temperror') return 'temperror';\n if (dmarc.result === 'permerror') return 'permerror';\n // Subdomains may have result='none' (no own DMARC TXT record) but still\n // inherit a policy from the organisational domain. Only treat as no-record\n // when there is genuinely no policy object.\n if (!dmarc.policy) return 'no-record';\n const { p, sp, pct = 100 } = dmarc.policy;\n\n // sp is weaker than p when explicitly set to a less restrictive mode\n const isSpWeak =\n sp !== undefined &&\n ((p === 'reject' && (sp === 'quarantine' || sp === 'none')) || (p === 'quarantine' && sp === 'none'));\n\n if (p === 'reject') {\n if (pct >= 100) return isSpWeak ? 'reject-full-sp-weak' : 'reject-full';\n return isSpWeak ? 'reject-partial-sp-weak' : 'reject-partial';\n }\n if (p === 'quarantine') {\n if (pct >= 100) return isSpWeak ? 'quarantine-full-sp-weak' : 'quarantine-full';\n return isSpWeak ? 'quarantine-partial-sp-weak' : 'quarantine-partial';\n }\n return 'none';\n}\n\nconst EMAIL_STATUS: Record<EmailComplianceState, BoxStatus> = {\n pass: 'good',\n 'fail-both': 'danger',\n 'fail-dkim': 'danger',\n 'fail-spf': 'danger',\n none: 'danger',\n permerror: 'warning',\n temperror: 'warning',\n};\n\nconst DOMAIN_STATUS: Record<DomainPolicyState, BoxStatus> = {\n 'reject-full': 'good',\n 'reject-full-sp-weak': 'warning',\n 'reject-partial': 'warning',\n 'reject-partial-sp-weak': 'warning',\n 'quarantine-full': 'warning',\n 'quarantine-full-sp-weak': 'warning',\n 'quarantine-partial': 'warning',\n 'quarantine-partial-sp-weak': 'warning',\n none: 'danger',\n 'no-record': 'danger',\n permerror: 'danger',\n temperror: 'warning',\n};\n\nconst ICON_FOR_STATUS: Record<BoxStatus, string> = {\n good: mdiCheck,\n danger: mdiClose,\n warning: mdiAlert,\n};\n\nconst ICON_COLOR_FOR_STATUS: Record<BoxStatus, string> = {\n good: 'success',\n danger: 'error',\n warning: 'warning',\n};\n\nconst StyledRow = styled.div`\n display: flex;\n gap: 16px;\n align-items: stretch;\n width: 100%;\n margin-bottom: 24px;\n\n @media (min-width: 766px) {\n margin-top: 24px;\n }\n\n @media (max-width: 765px) {\n flex-direction: column;\n margin-bottom: 24px;\n }\n`;\n\nconst StyledBox = styled.div`\n flex: 1 0 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n background: var(--sand, ${SAND});\n border-radius: 8px;\n padding: 12px 8px 12px 16px;\n`;\n\nconst StyledTitleRow = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`;\n\nconst StyledIconWrapper = styled.span`\n display: flex;\n align-items: center;\n flex-shrink: 0;\n`;\n\nconst StyledTitle = styled.span`\n font-family: var(--sc-font-heading, ${FONT.TYPE.HEADING});\n font-size: 20px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--sc-text-darkest);\n white-space: nowrap;\n`;\n\nconst StyledBody = styled.p`\n font-family: var(--sc-font-body, ${FONT.TYPE.TEXT});\n font-size: 14px;\n font-weight: 400;\n line-height: 1.4;\n color: var(--sc-text-color);\n margin: 0;\n padding-left: 32px;\n`;\n\ninterface SummaryBoxProps {\n title: string;\n body: React.ReactNode;\n status: BoxStatus;\n 'data-testid'?: string;\n}\n\nfunction SummaryBox({ title, body, status, 'data-testid': testId }: SummaryBoxProps) {\n return (\n <StyledBox data-testid={testId}>\n <StyledTitleRow>\n <StyledIconWrapper>\n <Icon icon={ICON_FOR_STATUS[status] as any} size=\"medium\" color={ICON_COLOR_FOR_STATUS[status]} />\n </StyledIconWrapper>\n <StyledTitle>{title}</StyledTitle>\n </StyledTitleRow>\n <StyledBody>{body}</StyledBody>\n </StyledBox>\n );\n}\n\nexport interface DmarcSummaryBoxesProps {\n dmarc: DmarcProps | undefined;\n isDomainAnalyzer?: boolean;\n /** Card-level status from signal-logic. Used to distinguish permerror sub-cases (rua present → warning, no rua → danger). */\n cardType?: BaseCardType;\n t: (key: string, params?: Record<string, unknown>) => string;\n}\n\n/**\n * Report messages that have corresponding translation keys (`card.dmarc.${slug}`).\n * Other report messages are human-readable descriptions (e.g. \"No DMARC policy is published\")\n * that must NOT be interpolated into a translation key.\n */\nconst TRANSLATABLE_REPORT_MESSAGES = new Set([\n 'receiver-does-not-accept-reports-rua',\n 'receiver-does-not-accept-reports-ruf',\n 'receiver-does-not-accept-reports-both',\n]);\n\n/**\n * Returns the subset of dmarc.report entries that are translatable warnings.\n */\nfunction getTranslatableReportWarnings(dmarc: DmarcProps | undefined) {\n if (!Array.isArray(dmarc?.report)) return [];\n return dmarc!.report!.filter((r) => r.message && TRANSLATABLE_REPORT_MESSAGES.has(r.message));\n}\n\n/**\n * Returns true when the DMARC report array contains receiver/reporting warnings\n * (e.g. RUA/RUF recipients not configured to accept reports).\n */\nexport function hasReportWarnings(dmarc: DmarcProps | undefined): boolean {\n return getTranslatableReportWarnings(dmarc).length > 0;\n}\n\n/**\n * DmarcSummaryBoxes renders two side-by-side summary boxes for the DMARC card.\n *\n * - Box 1 (\"Email: Compliance\") summarises whether the specific email passed DMARC.\n * Hidden in domain-analyzer mode (no email to evaluate) and when result is an error.\n * - Box 2 (\"Domain: Policy\") summarises the domain's DMARC policy strength. Always shown.\n *\n * On smaller viewports (≤765px) the boxes stack vertically.\n */\nexport function DmarcSummaryBoxes({ dmarc, isDomainAnalyzer = false, t }: DmarcSummaryBoxesProps) {\n const domainState = getDomainPolicyState(dmarc);\n const emailState = isDomainAnalyzer ? null : getEmailComplianceState(dmarc);\n const pct = dmarc?.policy?.pct ?? 100;\n const reportWarnings = hasReportWarnings(dmarc);\n const hasRua = Boolean(dmarc?.policy?.rua?.length) || /(?:^|;\\s*)rua\\s*=\\s*mailto:/i.test(dmarc?.raw ?? '');\n\n const getDomainBody = (state: DomainPolicyState): React.ReactNode => {\n // When reject-full has report warnings, use a combined summary that replaces\n // specific problem details with a concise impact statement.\n if (state === 'reject-full' && reportWarnings) {\n return t('card.dmarc.summary-domain-reject-full-report-warning');\n }\n\n let body: string;\n switch (state) {\n case 'reject-full':\n body = t('card.dmarc.summary-domain-reject-full');\n break;\n case 'reject-full-sp-weak':\n body = t('card.dmarc.summary-domain-reject-full-sp-weak');\n break;\n case 'reject-partial':\n body = t('card.dmarc.summary-domain-reject-partial', { pct });\n break;\n case 'reject-partial-sp-weak':\n body = t('card.dmarc.summary-domain-reject-partial-sp-weak', { pct });\n break;\n case 'quarantine-full':\n body = t('card.dmarc.summary-domain-quarantine-full');\n break;\n case 'quarantine-full-sp-weak':\n body = t('card.dmarc.summary-domain-quarantine-full-sp-weak');\n break;\n case 'quarantine-partial':\n body = t('card.dmarc.summary-domain-quarantine-partial', { pct });\n break;\n case 'quarantine-partial-sp-weak':\n body = t('card.dmarc.summary-domain-quarantine-partial-sp-weak', { pct });\n break;\n case 'none':\n body = t('card.dmarc.summary-domain-none');\n break;\n case 'no-record':\n body = t('card.dmarc.summary-domain-no-record');\n break;\n case 'permerror':\n body = hasRua\n ? t('card.dmarc.summary-domain-permerror-rua-fallback')\n : t('card.dmarc.summary-domain-permerror');\n break;\n case 'temperror':\n body = t('card.dmarc.summary-domain-temperror');\n break;\n }\n\n if (reportWarnings) {\n const warnings = getTranslatableReportWarnings(dmarc)\n .map((r) => {\n const { message, ...params } = r;\n return t(`card.dmarc.${message}`, params);\n })\n .join(' ');\n body = `${body} ${warnings}`;\n }\n\n return body;\n };\n\n const getEmailBody = (state: EmailComplianceState): string => {\n switch (state) {\n case 'pass':\n return t('card.dmarc.summary-email-pass');\n case 'fail-both':\n return t('card.dmarc.summary-email-fail-both');\n case 'fail-dkim':\n return t('card.dmarc.summary-email-fail-dkim');\n case 'fail-spf':\n return t('card.dmarc.summary-email-fail-spf');\n case 'none':\n return t('card.dmarc.summary-email-none');\n case 'permerror':\n return t('card.dmarc.summary-email-permerror');\n case 'temperror':\n return t('card.dmarc.summary-email-temperror');\n }\n };\n\n return (\n <StyledRow data-testid=\"dmarc-summary-boxes\">\n {emailState && (\n <SummaryBox\n title={t('card.dmarc.summary-email-title')}\n body={getEmailBody(emailState)}\n status={EMAIL_STATUS[emailState]}\n data-testid=\"dmarc-summary-email\"\n />\n )}\n <SummaryBox\n title={t('card.dmarc.summary-domain-title')}\n body={getDomainBody(domainState)}\n status={\n reportWarnings && DOMAIN_STATUS[domainState] === 'good'\n ? 'warning'\n : domainState === 'permerror' && hasRua\n ? 'warning'\n : DOMAIN_STATUS[domainState]\n }\n data-testid=\"dmarc-summary-domain\"\n />\n </StyledRow>\n );\n}\n","import React, { forwardRef, useState, useCallback, useMemo } from 'react';\nimport type { Comp } from '@redsift/design-system';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist, { ChecklistItem } from '../../components/ui/Checklist/Checklist';\nimport type { SignalCardDmarcProps } from './types';\nimport { adaptDmarcExtractor } from '../../adapters/extractor-adapter';\nimport { DmarcSummaryBoxes } from './DmarcSummaryBoxes';\nimport { DmarcPromoBanner } from './DmarcPromoBanner';\n\nconst COMPONENT_NAME = 'SignalCardDmarc';\nconst CLASSNAME = 'redsift-signal-card-dmarc';\n\n/**\n * SignalCardDmarc displays DMARC (Domain-based Message Authentication, Reporting & Conformance)\n * authentication results, alignment checks, and policy information.\n */\nexport const SignalCardDmarc: Comp<SignalCardDmarcProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n jmap: {\n extsecrep: { dmarc, dkim, spf },\n },\n jmap,\n isDomainAnalyzer = false,\n useInvestigateColors = false,\n isCollapsible,\n areAllCollapsed: areAllCollapsedProp,\n onCollapseAll: onCollapseAllProp,\n renderHeader,\n promoHref,\n className,\n ...forwardedProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const areAllCollapsed = areAllCollapsedProp !== undefined ? areAllCollapsedProp : internalCollapsed;\n const onCollapseAll = useCallback(\n (collapsed: boolean) => {\n setInternalCollapsed(collapsed);\n onCollapseAllProp?.(collapsed);\n },\n [onCollapseAllProp]\n );\n\n const { cardType, extractedItemsCategories, infoItemsCategories } = useMemo(\n () => adaptDmarcExtractor(dmarc, dkim, spf, jmap, t, isDomainAnalyzer),\n [dmarc, dkim, spf, jmap, t, isDomainAnalyzer]\n );\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n // Build a renderHeader that places summary boxes above the promo banner.\n // Respects the external renderHeader prop: null suppresses the banner, a function replaces it.\n const effectiveRenderHeader = useCallback(() => {\n const bannerContent = (() => {\n if (renderHeader === null) return null;\n if (renderHeader !== undefined) return renderHeader();\n return (\n <DmarcPromoBanner\n text={t('dmarc-promo.text')}\n buttonLabel={t('dmarc-promo.button')}\n useInvestigateColors={useInvestigateColors}\n href={promoHref}\n />\n );\n })();\n\n return (\n <>\n <DmarcSummaryBoxes dmarc={dmarc} isDomainAnalyzer={isDomainAnalyzer} cardType={cardType} t={t} />\n {bannerContent}\n </>\n );\n }, [dmarc, isDomainAnalyzer, cardType, t, renderHeader, useInvestigateColors, promoHref]);\n\n const sections = [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extracted-${i}`,\n title: cat.title,\n testId: `dmarc-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `checklist-${i}`,\n title: cat.title,\n testId: `dmarc-checklist-${i}`,\n content: <Checklist items={cat.items as ChecklistItem[]} />,\n })) || []),\n ];\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n title={'DMARC'}\n type=\"DMARC\"\n cardType={cardType}\n sections={sections}\n renderHeader={effectiveRenderHeader}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n className={className}\n ref={ref}\n data-testid=\"signal-card-dmarc\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardDmarc.className = CLASSNAME;\nSignalCardDmarc.displayName = COMPONENT_NAME;\n","import React, { forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport type { SignalCardDnssecProps } from './types';\nimport { adaptDnssecExtractor } from '../../adapters/extractor-adapter';\n\nconst COMPONENT_NAME = 'SignalCardDnssec';\nconst CLASSNAME = 'redsift-signal-card-dnssec';\n\n/**\n * SignalCardDnssec Component\n *\n * Displays DNSSEC (DNS Security Extensions) validation status for a domain.\n * DNSSEC adds cryptographic signatures to DNS data to ensure authenticity and integrity.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardDnssec\n * jmap={{ extsecrep: { dnsSecurity: { result: 'pass' } } }}\n * shortDescription=\"Custom description\"\n * />\n * ```\n */\nexport const SignalCardDnssec: Comp<SignalCardDnssecProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardDnssecProps\n>(function SignalCardDnssec(props, ref) {\n const { className, jmap, shortDescription, onHeightChange, useInvestigateColors = false, ...forwardedProps } = props;\n const { t } = useSignalCardTranslation('investigate');\n const dnsSecurity = jmap?.extsecrep?.dnsSecurity;\n\n const extData = useMemo(() => {\n if (!dnsSecurity) return null;\n return adaptDnssecExtractor(dnsSecurity, t);\n }, [dnsSecurity, t]);\n\n const sections = useMemo(() => {\n if (!dnsSecurity || !extData) return [];\n const { infoItemsCategories } = extData;\n return [\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `dnssec-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ];\n }, [dnsSecurity, extData]);\n\n if (!dnsSecurity || !extData) return null;\n\n const { cardType } = extData;\n const sectionIds = sections.map((s) => s.id);\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title=\"DNSSEC\"\n type=\"DNSSEC\"\n cardType={cardType}\n sections={sections}\n customSectionOrder={['introDescription', ...sectionIds]}\n shortDescription={dnsSecurity.result === 'pass' ? shortDescription : t('signal-description.DNSSEC_md_SHORT_fail')}\n onHeightChange={onHeightChange}\n data-testid=\"signal-card-dnssec\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardDnssec.displayName = COMPONENT_NAME;\nSignalCardDnssec.className = CLASSNAME;\n","import React, { forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { useCollapseController } from '../../hooks/useCollapseController';\n\nimport { adaptFcrdnsExtractor } from '../../adapters/extractor-adapter';\nimport { nodeARecord, nodePtrRecord, nodeSenderIp, nodeEhlo, nodeError } from './node-helpers';\nimport type { SignalCardFcrdnsProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardFcrdns';\nconst CLASSNAME = 'redsift-signal-card-fcrdns';\n\n/**\n * SignalCardFcrdns Component\n *\n * Displays Forward Confirmed Reverse DNS (FCrDNS) validation results with\n * interactive Sankey diagrams showing DNS resolution flows.\n *\n * FCrDNS verification helps prevent email spoofing by ensuring the sender's\n * IP address matches forward and reverse DNS lookups.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardFcrdns\n * jmap={{ extsecrep: { ehlo: { isAddrDomain: true } } }}\n * investigate={{ fcrdns: fcrdnsData, ehloCheck: ehloCheckData }}\n * />\n * ```\n */\nexport const SignalCardFcrdns: Comp<SignalCardFcrdnsProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardFcrdnsProps\n>(function SignalCardFcrdns(props, ref) {\n const {\n className,\n jmap: { extsecrep = {} } = {},\n investigate,\n onHeightChange,\n bannerVariant,\n useInvestigateColors = false,\n renderFooter,\n isCollapsible,\n areAllCollapsed: areAllCollapsedProp,\n onCollapseAll,\n ...forwardedProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n\n const fcrdns = investigate?.fcrdns ?? {};\n const ehloCheck = investigate?.ehloCheck ?? {};\n const { ehlo } = extsecrep;\n\n const {\n areAllCollapsed,\n handleCollapseAll,\n isCollapsible: resolvedIsCollapsible,\n } = useCollapseController({\n areAllCollapsed: areAllCollapsedProp,\n onCollapseAll,\n isCollapsible,\n });\n\n // Memoize the extracted data so Sankey charts don't re-render on parent updates\n const { cardType, extractedItemsCategories, infoItemsCategories } = useMemo(\n () => adaptFcrdnsExtractor(fcrdns, ehloCheck, ehlo, t),\n [fcrdns, ehloCheck, ehlo, t]\n );\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extractedItems-${i}`,\n title: cat.title,\n testId: `fcrdns-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `fcrdns-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ];\n\n const sectionIds = sections.map((s) => s.id);\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title=\"FCrDNS\"\n type=\"FCRDNS\"\n cardType={cardType}\n sections={sections}\n customSectionOrder={['introDescription', ...sectionIds]}\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n data-testid=\"signal-card-fcrdns\"\n data-card-type={cardType}\n renderFooter={renderFooter}\n isCollapsible={resolvedIsCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={handleCollapseAll}\n />\n );\n});\n\nSignalCardFcrdns.displayName = COMPONENT_NAME;\nSignalCardFcrdns.className = CLASSNAME;\n\n// Export helper functions for testing\nexport { nodeARecord, nodePtrRecord, nodeSenderIp, nodeEhlo, nodeError, SignalCardFcrdns as SignalCardFcrdnsBase };\n","/* istanbul ignore file */\n/**\n * Styled components for SignalCardGoogleYahooCompliance.\n *\n * All theming uses CSS variables with Design System fallbacks.\n * When SignalCardThemeProvider sets useInvestigateColors=true,\n * these will be overridden with Investigate-specific fonts.\n */\nimport styled from 'styled-components';\n\n// Default fallback values - use DS CSS variables with hardcoded ultimate fallbacks\nconst DS_FONT_BODY = \"var(--redsift-typography-body-font-family, 'Poppins', sans-serif)\";\nconst DS_TEXT_COLOR = 'var(--redsift-color-neutral-x-dark-grey, #3B3A58)';\nconst DS_WARNING_COLOR = 'var(--redsift-color-notifications-warning-primary, #f5a623)';\n\n/**\n * Wrapper for intro paragraph content with standardized typography\n */\nexport const StyledIntroWrapper = styled.div`\n p {\n font-size: 14px;\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n line-height: 1.5;\n margin: 0 0 0.5rem 0;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n\n b,\n strong {\n font-weight: 600;\n }\n\n a {\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n }\n }\n`;\n\n/**\n * Warning message container with icon and text alignment\n */\nexport const StyledWarningMessage = styled.p`\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 14px;\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n line-height: 1.5;\n margin: 0 0 0.5rem 0;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n\n svg {\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n margin-top: 2px;\n color: var(--sc-warning-color, ${DS_WARNING_COLOR});\n }\n\n a {\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n }\n`;\n","import React, { forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { Link, Icon } from '@redsift/design-system';\nimport type { Comp } from '@redsift/design-system';\nimport { mdiAlert } from '@redsift/icons';\n\n// Core imports\nimport { SignalCardNormal, type ItemCategory } from '../SignalCardNormal';\nimport Checklist, { ChecklistItem } from '../../components/ui/Checklist/Checklist';\n\n// Type imports\nimport type { JmapProps, InvestigateProps } from '../../types';\n\n// Legacy redux\nimport { parseGlossaryMarkdown } from '../../utils/parse-glossary-markdown';\n\nimport { StyledIntroWrapper, StyledWarningMessage } from './styles';\nimport type {\n SignalCardGoogleYahooComplianceProps,\n ExtractDataResult,\n ComputeStatusParams,\n ComputeStatusResult,\n} from './types';\nimport { extractGoogleYahooComplianceData, statusToTranslationKey, getAlignPolicy } from '@redsift/signal-logic';\n\nconst COMPONENT_NAME = 'SignalCardGoogleYahooCompliance';\nconst CLASSNAME = 'redsift-signal-card-google-yahoo-compliance';\n\nfunction extractData(\n jmap: JmapProps | null,\n investigate: InvestigateProps | null,\n t: ReturnType<typeof useSignalCardTranslation>['t'],\n tRoot?: ReturnType<typeof useSignalCardTranslation>['t']\n): ExtractDataResult {\n const data = extractGoogleYahooComplianceData(jmap, investigate, tRoot || t);\n\n if (!data) {\n return {\n cardType: 'unknown',\n infoItemsCategories: [],\n introDescription: null,\n };\n }\n\n const {\n cardType,\n spfStatus,\n dkimStatus,\n spfAlignStatus,\n dkimAlignStatus,\n spfPolicy,\n dkimPolicy,\n dmarcStatus,\n dmarcPolicy,\n senderIpStatus,\n ehloStatus,\n senderIpMatchesEhloARecordStatus,\n tlsStatus,\n tlsVersion,\n oneClickUnsubStatus,\n } = data;\n\n // Build intro description with warning if needed\n const introDescription = (\n <StyledIntroWrapper>\n <p>\n <b>Microsoft</b>, <b>Google</b> {t('summary.and')} <b>Yahoo</b> {t('summary.requirements')}{' '}\n <b>—{t('summary.bulk-senders')}—</b> {t('summary.must-be-met')}{' '}\n <Link href=\"https://redsift.com/guides/google-and-yahoos-bulk-email-sender-requirements\" target=\"_blank\">\n {t('summary.learn-more')}\n </Link>\n </p>\n {oneClickUnsubStatus === 'warning' && (\n <StyledWarningMessage>\n <Icon icon={mdiAlert} size=\"small\" color=\"#ed6c02\" />\n <span>\n {parseGlossaryMarkdown(t('section.one-click-unsub.evaluation.warning'))}{' '}\n <Link href=\"https://community.redsift.com/s/article/000002111\" target=\"_blank\">\n {t('section.one-click-unsub.learn_more')}\n </Link>\n </span>\n </StyledWarningMessage>\n )}\n </StyledIntroWrapper>\n );\n\n // SPF and DKIM section\n const spfDkimCategory: ItemCategory = {\n title: t('section.spf-dkim.header'),\n caption: '',\n items: [\n {\n type: spfStatus,\n text: parseGlossaryMarkdown(t(`section.spf-dkim.spf.${statusToTranslationKey(spfStatus)}_md`)),\n },\n {\n type: dkimStatus,\n text: parseGlossaryMarkdown(t(`section.spf-dkim.dkim.${statusToTranslationKey(dkimStatus)}_md`)),\n },\n ],\n };\n\n // SPF or DKIM Alignment section\n const alignmentCategory: ItemCategory = {\n title: t('section.spf-dkim-alignment.header'),\n caption: '',\n items: [\n {\n type: spfAlignStatus,\n text: parseGlossaryMarkdown(\n t(`section.spf-dkim-alignment.align-spf.${statusToTranslationKey(spfAlignStatus)}_md`, { policy: spfPolicy })\n ),\n },\n {\n type: dkimAlignStatus,\n text: parseGlossaryMarkdown(\n t(`section.spf-dkim-alignment.align-dkim.${statusToTranslationKey(dkimAlignStatus)}_md`, {\n policy: dkimPolicy,\n })\n ),\n },\n ],\n };\n\n // DMARC section\n const dmarcCategory: ItemCategory = {\n title: t('section.dmarc.header'),\n caption: '',\n items: [\n {\n type: dmarcStatus,\n text: parseGlossaryMarkdown(t(`section.dmarc.evaluation.${statusToTranslationKey(dmarcStatus)}_md`)),\n },\n {\n type: dmarcStatus,\n text: parseGlossaryMarkdown(\n t(`section.dmarc.policy.${statusToTranslationKey(dmarcStatus)}_md`, {\n policy: dmarcPolicy,\n })\n ),\n },\n ],\n };\n\n // FCrDNS section\n const fcrdnsCategory: ItemCategory = {\n title: t('section.fcrdns.header'),\n caption: '',\n items: [\n {\n type: senderIpStatus,\n text: parseGlossaryMarkdown(t(`section.fcrdns.sender-ip.${statusToTranslationKey(senderIpStatus)}_md`)),\n },\n {\n type: ehloStatus,\n text: parseGlossaryMarkdown(t(`section.fcrdns.ehlo.${statusToTranslationKey(ehloStatus)}_md`)),\n },\n {\n type: senderIpMatchesEhloARecordStatus,\n text: parseGlossaryMarkdown(\n t(\n `section.fcrdns.sender-ip-matches-ehlo-a-record.${statusToTranslationKey(\n senderIpMatchesEhloARecordStatus\n )}_md`\n )\n ),\n },\n ],\n };\n\n // Spam Rate section\n const reputationCategory: ItemCategory = {\n title: t('section.reputation.header'),\n caption: '',\n items: [\n {\n type: 'info',\n text: (\n <>\n {parseGlossaryMarkdown(t('section.reputation.summary_md'))}{' '}\n {parseGlossaryMarkdown(t('section.reputation.information_md'))}\n </>\n ),\n },\n ],\n };\n\n // TLS section\n const tlsCategory: ItemCategory = {\n title: t('section.tls.header'),\n caption: '',\n items: [\n {\n type: tlsStatus,\n text: parseGlossaryMarkdown(\n t(`section.tls.evaluation.${statusToTranslationKey(tlsStatus)}_md`, {\n version: tlsVersion?.version,\n })\n ),\n },\n ],\n };\n\n // One-click unsubscribe section\n const oneClickUnsubCategory: ItemCategory = {\n title: t('section.one-click-unsub.header'),\n caption: '',\n items: [\n {\n type: oneClickUnsubStatus,\n text: (\n <>\n {oneClickUnsubStatus === 'warning' ? (\n <>{t('section.one-click-unsub.evaluation.warning')}</>\n ) : (\n <>\n {parseGlossaryMarkdown(\n t(`section.one-click-unsub.evaluation.${statusToTranslationKey(oneClickUnsubStatus)}_md`, {\n defaultValue:\n oneClickUnsubStatus === 'good'\n ? 'One-click unsubscribe link is present.'\n : 'One-click unsubscribe link **is not** present.',\n })\n )}\n </>\n )}{' '}\n <Link href=\"https://community.redsift.com/s/article/000002111\" target=\"_blank\">\n {t('section.one-click-unsub.learn_more')}\n </Link>\n </>\n ),\n },\n ],\n };\n\n const infoItemsCategories: ItemCategory[] = [\n spfDkimCategory,\n alignmentCategory,\n dmarcCategory,\n fcrdnsCategory,\n reputationCategory,\n tlsCategory,\n oneClickUnsubCategory,\n ];\n\n return {\n cardType,\n infoItemsCategories,\n introDescription,\n };\n}\n\n// Legacy export for getSignalStatus.ts compatibility\nexport function computeGoogleYahooComplianceStatus({\n // domain is not used but required for API compatibility\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n domain: _domain,\n jmap,\n investigate,\n}: ComputeStatusParams): ComputeStatusResult | null {\n // Use a dummy translation function for status computation\n const dummyT = (key: string) => key;\n const data = extractGoogleYahooComplianceData(jmap ?? null, investigate ?? null, dummyT);\n\n if (!data) return null;\n\n return { cardType: data.cardType };\n}\n\n/**\n * SignalCardGoogleYahooCompliance Component\n *\n * Displays compliance status for Microsoft, Google, and Yahoo bulk email sender requirements.\n * Shows authentication (SPF, DKIM, DMARC), alignment, FCrDNS, TLS, and one-click unsubscribe status.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardGoogleYahooCompliance\n * jmap={jmapData}\n * investigate={investigateData}\n * />\n * ```\n */\nexport const SignalCardGoogleYahooCompliance: Comp<SignalCardGoogleYahooComplianceProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardGoogleYahooComplianceProps\n>(function SignalCardGoogleYahooCompliance(props, ref) {\n const { className, jmap, investigate, onHeightChange, useInvestigateColors = false, ...forwardedProps } = props;\n const { t } = useSignalCardTranslation('investigate', 'card.google-yahoo-compliance');\n const { t: tRoot } = useSignalCardTranslation('investigate');\n\n const extData = useMemo(\n () => extractData(jmap ?? null, investigate ?? null, t, tRoot),\n [jmap, investigate, t, tRoot]\n );\n\n const { cardType, infoItemsCategories, introDescription } = extData;\n\n const sections = useMemo(\n () =>\n infoItemsCategories.map((category, index) => ({\n id: `category-${index}`,\n title: category.title,\n testId: `google-yahoo-category-${index}`,\n content: <Checklist items={category.items as ChecklistItem[]} />,\n })),\n [infoItemsCategories]\n );\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title={t('title') || 'Microsoft, Google and Yahoo Deliverability Compliance'}\n type=\"GOOGLE_YAHOO_COMPLIANCE\"\n cardType={cardType}\n introDescription={introDescription}\n sections={sections}\n onHeightChange={onHeightChange}\n data-testid=\"signal-card-google-yahoo\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardGoogleYahooCompliance.displayName = COMPONENT_NAME;\nSignalCardGoogleYahooCompliance.className = CLASSNAME;\n\n// Export helper functions for testing\nexport { extractData, getAlignPolicy, statusToTranslationKey };\n","import React, { forwardRef, useMemo, useCallback } from 'react';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport type { Comp } from '@redsift/design-system';\n\n// Core imports\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { adaptMtaStsExtractor } from '../../adapters/extractor-adapter';\n\nimport type { SignalCardMtaStsProps } from './types';\n\n// Re-export signal-logic functions for backward compatibility\nexport { extractMtaStsData as buildMtaStsState, getMtaStsCardType as getCardType } from '@redsift/signal-logic';\n\nconst COMPONENT_NAME = 'SignalCardMtaSts';\nconst CLASSNAME = 'redsift-signal-card-mta-sts';\n\nconst i18nRoot = 'signal-cards.mta-sts';\n\n/**\n * SignalCardMtaSts displays MTA-STS validation results including TLS-RPT records,\n * MTA-STS DNS records, policy file configuration, and SSL certificate status.\n */\nexport const SignalCardMtaSts: Comp<SignalCardMtaStsProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardMtaStsProps\n>(function SignalCardMtaSts(\n {\n jmap,\n domain,\n onHeightChange,\n bannerVariant,\n useInvestigateColors,\n isCollapsible,\n areAllCollapsed,\n onCollapseAll,\n ...forwardedProps\n },\n ref\n) {\n const { t } = useSignalCardTranslation('investigate');\n\n const mtaInfo = jmap?.extsecrep?.mta;\n\n const adapterResult = useMemo(() => {\n if (!mtaInfo) return null;\n return adaptMtaStsExtractor(mtaInfo, t, domain);\n }, [mtaInfo, t, domain]);\n\n const getTranslatedCaption = useCallback(\n (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n },\n [t]\n );\n\n if (!mtaInfo || !adapterResult) return null;\n\n const {\n cardType,\n infoTlsRpt,\n extractedTlsRptCategories,\n infoMtaSts,\n extractedMtaStsCategories,\n infoPolicy,\n extractedItemsPolicy,\n infoCertificate,\n } = adapterResult;\n\n const sections = [\n ...(infoTlsRpt?.map((cat, i) => ({\n id: `tlsRptChecklist-${i}`,\n title: cat.title,\n testId: `mta-sts-tls-rpt-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ...(extractedTlsRptCategories?.map((cat, i) => ({\n id: `extractedItemsTlsRpt-${i}`,\n title: cat.title,\n testId: `mta-sts-tls-rpt-extracted-${i}`,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoMtaSts?.map((cat, i) => ({\n id: `checklistsMtaSts-${i}`,\n title: cat.title,\n testId: `mta-sts-record-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ...(extractedMtaStsCategories?.map((cat, i) => ({\n id: `extractedItemsMtaSts-${i}`,\n title: cat.title,\n testId: `mta-sts-record-extracted-${i}`,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoPolicy?.map((cat, i) => ({\n id: `checklistsPolicy-${i}`,\n title: cat.title,\n testId: `mta-sts-policy-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ...(extractedItemsPolicy?.map((cat, i) => ({\n id: `extractedItemsPolicy-${i}`,\n title: cat.title,\n testId: `mta-sts-policy-extracted-${i}`,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoCertificate?.map((cat, i) => ({\n id: `checklistsCertificate-${i}`,\n title: cat.title,\n testId: `mta-sts-certificate-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ];\n\n const sectionIds = sections.map((s) => s.id);\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n title={t(`${i18nRoot}.title`)}\n type=\"MTA-STS\"\n cardType={cardType}\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n customSectionOrder={['introDescription', ...sectionIds]}\n sections={sections}\n data-testid=\"signal-card-mta-sts\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardMtaSts.className = CLASSNAME;\nSignalCardMtaSts.displayName = COMPONENT_NAME;\n","import React, { useState, useEffect, forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport type { Comp } from '@redsift/design-system';\n\nimport { Ehlo, ReturnPath } from '../../components/glossary/glossary';\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist, { ChecklistItem } from '../../components/ui/Checklist/Checklist';\nimport { getSpfPassResult } from '@redsift/signal-logic';\nimport { adaptSpfExtractor } from '../../adapters/extractor-adapter';\nimport { buildSPFCheckerLink } from '@redsift/signal-logic';\nimport type {\n SignalCardSpfProps,\n SignalCardSpfState,\n SpfIdentity,\n ResultOption,\n SpfPassResult,\n SpfResultEntry,\n ExtractDataResult,\n} from './types';\n\nconst COMPONENT_NAME = 'SignalCardSpf';\nconst CLASSNAME = 'redsift-signal-card-spf';\n\nexport const SignalCardSpf: Comp<SignalCardSpfProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n useInvestigateColors,\n isCollapsible,\n areAllCollapsed,\n onCollapseAll,\n className,\n jmap,\n onHeightChange,\n ...restProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n\n // Build SPF Checker link if domain is available\n const spf = jmap?.extsecrep?.spf;\n const domain = (spf as { domain?: string })?.domain;\n const spfCheckerLink = domain && typeof domain === 'string' ? buildSPFCheckerLink(domain) : null;\n const ctaButtonName = t('card.subdo.button-name');\n const onCTAButtonClick = spfCheckerLink ? () => window.open(spfCheckerLink, '_blank') : undefined;\n\n const computeInitialState = useMemo(() => {\n const { spf } = jmap.extsecrep;\n const spfPassResult = getSpfPassResult({ jmap }) as SpfPassResult;\n const spfResults: SpfResultEntry[] = [];\n const resultOptions: ResultOption[] = [];\n\n const spfTypes: SpfIdentity[] = ['mailfrom', 'helo'];\n spfTypes.forEach((identity, idx) => {\n if (spfPassResult.availableIdentities.includes(identity)) {\n const { cardType, extractedItemsCategories, infoItems } = adaptSpfExtractor(\n spf,\n identity,\n t\n ) as ExtractDataResult;\n const label = identity === 'helo' ? <Ehlo /> : <ReturnPath />;\n spfResults.push({\n cardType,\n extractedItemsCategories,\n infoItems,\n });\n resultOptions.push({ id: idx, label, type: cardType });\n }\n });\n\n if (spfResults.length > 0) {\n const [firstResult] = spfResults;\n return {\n spfResults,\n resultOptions,\n cardType: firstResult.cardType,\n infoItems: firstResult.infoItems,\n extractedItemsCategories: firstResult.extractedItemsCategories,\n resultSelected: 0,\n };\n } else {\n return {\n spfResults: [],\n resultOptions,\n cardType: null,\n infoItems: null,\n extractedItemsCategories: null,\n resultSelected: 0,\n };\n }\n }, [jmap, t]);\n\n const [state, setState] = useState<SignalCardSpfState>(computeInitialState);\n\n useEffect(() => {\n setState(computeInitialState);\n }, [computeInitialState]);\n\n const onResultsChange = (key: number) => {\n const { spfResults } = state;\n const nextResult = spfResults[key];\n\n if (!nextResult) {\n return;\n }\n\n setState((prev) => ({\n ...prev,\n resultSelected: key,\n cardType: nextResult.cardType,\n infoItems: nextResult.infoItems,\n extractedItemsCategories: nextResult.extractedItemsCategories,\n }));\n\n setTimeout(() => {\n onHeightChange?.();\n }, 100);\n };\n\n const { cardType, extractedItemsCategories, infoItems, resultOptions, resultSelected } = state;\n\n // Don't render until we have data (prevents flash of blue header during initialization)\n if (cardType === null) {\n return null;\n }\n\n // NOTE: show error message in card if data is empty or malformed!\n let title: string | React.ReactElement = 'SPF';\n if (resultOptions.length === 1) {\n const Label = () => {\n return <>{resultOptions[0]?.label}</>;\n };\n title = (\n <span>\n SPF for <Label />\n </span>\n );\n }\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extracted-${i}`,\n title: cat.title,\n testId: `spf-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItems?.map((cat, i) => ({\n id: `checklist-${i}`,\n title: cat.title,\n testId: `spf-checklist-${i}`,\n content: <Checklist items={cat.items as ChecklistItem[]} />,\n })) || []),\n ];\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n resultOptions={resultOptions}\n optionsLabel={t('investigate:multiple-results-label-spf')}\n resultSelected={resultSelected}\n onResultsChange={onResultsChange}\n title={title}\n type=\"SPF\"\n {...restProps}\n cardType={cardType ?? undefined}\n sections={sections}\n ctaButtonName={ctaButtonName}\n onCTAButtonClick={onCTAButtonClick}\n data-testid=\"signal-card-spf\"\n data-card-type={cardType ?? 'unknown'}\n />\n );\n});\n\nSignalCardSpf.className = CLASSNAME;\nSignalCardSpf.displayName = COMPONENT_NAME;\n","import React, { forwardRef, useState, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { type CardStatus } from '@redsift/signal-logic';\nimport { SignalCardNormal as SignalCard } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { adaptDomainAnalyzerSpfExtractor } from '../../adapters/extractor-adapter';\nimport type { Comp } from '@redsift/design-system';\n\nimport type { SignalCardSpfDomainAnalyzerProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardSpfDomainAnalyzer';\nconst CLASSNAME = 'redsift-signal-card-spf-domain-analyzer';\n\n/**\n * SignalCardSpfDomainAnalyzer Component\n *\n * Advanced SPF Domain Analyzer showing DNS lookup counts, Dynamic SPF detection,\n * and detailed SPF policy analysis.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardSpfDomainAnalyzer\n * jmap={{ extsecrep: { spf: { status: 'pass', count: 5, ... } } }}\n * />\n * ```\n */\nexport const SignalCardSpfDomainAnalyzer: Comp<SignalCardSpfDomainAnalyzerProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardSpfDomainAnalyzerProps\n>(function SignalCardSpfDomainAnalyzer(props, ref) {\n const {\n className,\n jmap: { extsecrep },\n onHeightChange,\n bannerVariant,\n useInvestigateColors = false,\n ...forwardedProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n const spf = extsecrep?.spf;\n\n const { cardType, extractedItemsCategories, infoItemsCategories, ctaLink } = useMemo(\n () => adaptDomainAnalyzerSpfExtractor(spf as any, t),\n [spf, t]\n );\n\n const ctaButtonName = t('card.subdo.button-name');\n const onCTAButtonClick = ctaLink ? () => window.open(ctaLink, '_blank') : undefined;\n\n // State for collapse all functionality\n const [areAllCollapsed, setAreAllCollapsed] = useState(false);\n const handleCollapseAll = () => {\n setAreAllCollapsed((prev) => !prev);\n };\n\n const getTranslatedCaption = React.useCallback(\n (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n },\n [t]\n );\n\n const sections = useMemo(\n () => [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extractedItems-${i}`,\n title: cat.title,\n testId: `spf-da-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `spf-da-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ],\n [extractedItemsCategories, infoItemsCategories, getTranslatedCaption]\n );\n\n if (!spf) {\n return null;\n }\n\n return (\n <SignalCard\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title=\"SPF\"\n cardType={cardType as CardStatus}\n sections={sections}\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n useInvestigateColors={useInvestigateColors}\n ctaButtonName={ctaButtonName}\n onCTAButtonClick={onCTAButtonClick}\n shortDescription={t('signal-description.SPF_DOMAIN_ANALYZER_md_SHORT', {\n returnObjects: true,\n })}\n longDescription={t('signal-description.SPF_DOMAIN_ANALYZER_md_LONG', {\n returnObjects: true,\n })}\n isCollapsible={true}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={handleCollapseAll}\n data-testid=\"signal-card-spf-da\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardSpfDomainAnalyzer.displayName = COMPONENT_NAME;\nSignalCardSpfDomainAnalyzer.className = CLASSNAME;\n","import React, { forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\n\nimport { SUBDO_CARD_STATUS as CARD_STATUS } from '@redsift/signal-logic';\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { adaptSubdoExtractor } from '../../adapters/extractor-adapter';\n\n// Re-export signal-logic functions for backward compatibility\nexport { getSubdoCardType as getCardType, getSubdoCheck } from '@redsift/signal-logic';\n\nimport type { SignalCardSubdoProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardSubdo';\nconst CLASSNAME = 'redsift-signal-card-subdo';\n\n/**\n * SignalCardSubdo Component\n *\n * Displays subdomain takeover (Subdo) detection for SPF records.\n * Shows whether SPF records are vulnerable to subdomain poisoning attacks.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardSubdo\n * jmap={{ extsecrep: { spf: { domain: 'example.com', report: [...] } } }}\n * />\n * ```\n */\nexport const SignalCardSubdo: Comp<SignalCardSubdoProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardSubdoProps\n>(function SignalCardSubdo(props, ref) {\n const { className, jmap, onHeightChange, useInvestigateColors = false, ...forwardedProps } = props;\n const { t } = useSignalCardTranslation('investigate');\n\n const spf = jmap?.extsecrep?.spf;\n\n const { cardType, ctaLink, infoItemsCategories } = useMemo(\n () =>\n spf ? adaptSubdoExtractor(spf as any, t) : { cardType: undefined, ctaLink: undefined, infoItemsCategories: [] },\n [spf, t]\n );\n\n if (!spf) return null;\n const ctaButtonName = t('card.subdo.button-name');\n const onCTAButtonClick = ctaLink ? () => window.open(ctaLink, '_blank') : undefined;\n\n if (cardType === CARD_STATUS.GOOD) {\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title={t('card.subdo.not-detected')}\n type=\"SUBDOGOOD\"\n cardType={CARD_STATUS.GOOD}\n onHeightChange={onHeightChange}\n ctaButtonName={ctaButtonName}\n onCTAButtonClick={onCTAButtonClick}\n introDescription={[t('signal-description.SUBDOGOOD_md')]}\n shortDescription={[t('signal-description.SUBDOGOOD_md_SHORT')]}\n longDescription={[]}\n data-testid=\"signal-card-subdo\"\n data-card-type={CARD_STATUS.GOOD}\n />\n );\n }\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title={t('card.subdo.detected')}\n type=\"SUBDOBAD\"\n cardType={CARD_STATUS.DANGER}\n onHeightChange={onHeightChange}\n ctaButtonName={ctaButtonName}\n onCTAButtonClick={onCTAButtonClick}\n introDescription={[t('signal-description.SUBDOBAD_md')]}\n shortDescription={[t('signal-description.SUBDOBAD_md_SHORT')]}\n longDescription={[]}\n sections={\n infoItemsCategories?.length\n ? [\n {\n id: 'subdo-check',\n title: '',\n testId: 'subdo-check-section',\n content: <Checklist items={infoItemsCategories[0].items} />,\n },\n ]\n : []\n }\n data-testid=\"signal-card-subdo\"\n data-card-type={CARD_STATUS.DANGER}\n />\n );\n});\n\nSignalCardSubdo.displayName = COMPONENT_NAME;\nSignalCardSubdo.className = CLASSNAME;\n","import React, { forwardRef, useMemo } from 'react';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport type { Comp } from '@redsift/design-system';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport type { SignalCardThreatInvProps } from './types';\nimport { adaptThreatIntelligenceExtractor } from '../../adapters/extractor-adapter';\n\nconst COMPONENT_NAME = 'SignalCardThreatInv';\nconst CLASSNAME = 'redsift-signal-card-threat-inv';\n\nexport const SignalCardThreatInv: Comp<SignalCardThreatInvProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardThreatInvProps\n>(function SignalCardThreatInv({ jmap, isDomainAnalyzer = false, ...rest }, ref) {\n const extsecrep = jmap?.extsecrep;\n const from = jmap?.from;\n const { t } = useSignalCardTranslation('investigate');\n const sanitizedFrom = useMemo(\n () =>\n from\n ? {\n name: from.name ?? undefined,\n email: from.email ?? undefined,\n }\n : undefined,\n [from]\n );\n\n const extData = useMemo(\n () => adaptThreatIntelligenceExtractor(extsecrep, sanitizedFrom, t, isDomainAnalyzer),\n [extsecrep, sanitizedFrom, t, isDomainAnalyzer]\n );\n\n const sections = useMemo(() => {\n if (!extsecrep?.tl || !extData) {\n return [];\n }\n const { infoItemsCategories } = extData;\n return [\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `threat-inv-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ];\n }, [extsecrep?.tl, extData]);\n\n if (!extsecrep?.tl || !extData) {\n return null;\n }\n const { cardType } = extData;\n\n return (\n <SignalCardNormal\n title={t('signal-cards.threat-inv.title') || 'Threat Intelligence'}\n type=\"THREATINV\"\n {...rest}\n ref={ref}\n cardType={cardType}\n sections={sections}\n data-testid=\"signal-card-threat-inv\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardThreatInv.className = CLASSNAME;\nSignalCardThreatInv.displayName = COMPONENT_NAME;\n","import React, { forwardRef, useState, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { adaptTlsExtractor } from '../../adapters/extractor-adapter';\nimport type { Comp } from '@redsift/design-system';\nimport type { ExtractedData, SignalCardTlsProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardTls';\nconst CLASSNAME = 'redsift-signal-card-tls';\n\nexport const SignalCardTls: Comp<SignalCardTlsProps, HTMLDivElement> = forwardRef<HTMLDivElement, SignalCardTlsProps>(\n function SignalCardTls(props, ref) {\n const {\n jmap,\n useInvestigateColors,\n onHeightChange,\n renderFooter,\n bannerVariant,\n className,\n ...divProps\n } = props;\n const tls = jmap?.extsecrep?.tls;\n\n const { t } = useSignalCardTranslation('investigate');\n\n // State for collapse all functionality\n const [areAllCollapsed, setAreAllCollapsed] = useState(false);\n const handleCollapseAll = () => {\n setAreAllCollapsed((prev) => !prev);\n };\n\n const { cardType, extractedItemsCategories, infoItemsCategories } = useMemo(\n () => adaptTlsExtractor(tls, t),\n [tls, t]\n );\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = [\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: typeof cat.title === 'string' ? cat.title : undefined,\n testId: `tls-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extractedItems-${i}`,\n title: typeof cat.title === 'string' ? cat.title : undefined,\n testId: `tls-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ];\n\n const sectionIds = sections.map((s) => s.id);\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n title={t('signal-cards.tls.title') || 'TLS'}\n type=\"TLS\"\n cardType={cardType}\n sections={sections}\n customSectionOrder={['resultOptions', 'introDescription', ...sectionIds]}\n isCollapsible={true}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={handleCollapseAll}\n onHeightChange={onHeightChange}\n renderFooter={renderFooter}\n bannerVariant={bannerVariant}\n className={classNames(CLASSNAME, className)}\n ref={ref}\n {...divProps}\n data-testid=\"signal-card-tls\"\n data-card-type={cardType}\n />\n );\n }\n);\n\nSignalCardTls.className = CLASSNAME;\nSignalCardTls.displayName = COMPONENT_NAME;\n\nexport type { SignalCardTlsProps, ExtractedData };\n","import React, { forwardRef, useState, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { adaptUrlsExtractor } from '../../adapters/extractor-adapter';\n\nimport type { SignalCardUrlsProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardUrls';\nconst CLASSNAME = 'redsift-signal-card-urls';\n\n/**\n * SignalCardUrls Component\n *\n * Displays URLs extracted from email messages.\n * Shows clickable HTTP/HTTPS links and plain text for other URL types.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardUrls\n * investigate={{ urls: ['https://example.com', 'ftp://files.example.com'] }}\n * />\n * ```\n */\nexport const SignalCardUrls: Comp<SignalCardUrlsProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardUrlsProps\n>(function SignalCardUrls(props, ref) {\n const {\n className,\n investigate,\n onHeightChange,\n bannerVariant,\n useInvestigateColors = false,\n ...forwardedProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n const urls = investigate?.urls ?? null;\n\n // State for collapse all functionality\n const [areAllCollapsed, setAreAllCollapsed] = useState(false);\n const handleCollapseAll = () => {\n setAreAllCollapsed((prev) => !prev);\n };\n\n const { cardType, extractedItemsCategories, shortDescription } = useMemo(\n () => adaptUrlsExtractor(urls, t),\n [urls, t]\n );\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections =\n extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extracted-items-${i}`,\n title: cat.title,\n testId: `urls-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || [];\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title=\"URLs\"\n type=\"URLS\"\n cardType={cardType}\n sections={sections}\n shortDescription={shortDescription}\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n data-testid=\"signal-card-urls\"\n data-card-type={cardType}\n isCollapsible={true}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={handleCollapseAll}\n />\n );\n});\n\nSignalCardUrls.displayName = COMPONENT_NAME;\nSignalCardUrls.className = CLASSNAME;\n\n// Export helper functions for testing\nexport { SignalCardUrls as SignalCardUrlsBase };\n","import styled from 'styled-components';\nimport type { CardStatus } from '@redsift/signal-logic';\n// ============================================================================\n// All theming uses CSS variables with Design System fallbacks (Poppins).\n// When SignalCardThemeProvider sets useInvestigateColors=true,\n// these will be overridden with Investigate-specific fonts.\n// ============================================================================\n\n// Default fallback values - use DS CSS variables with hardcoded ultimate fallbacks\nconst DS_FONT_BODY = \"var(--redsift-typography-body-font-family, 'Poppins', sans-serif)\";\nconst DS_TEXT_COLOR = 'var(--redsift-color-neutral-x-dark-grey, #3B3A58)';\nconst DS_TEXT_SECONDARY = 'var(--redsift-color-neutral-dark-grey, #6E6D83)';\nconst DS_TEXT_HEADING = 'var(--redsift-color-neutral-x-dark-grey, #201F36)';\nconst DS_BORDER_LIGHT = 'var(--redsift-color-neutral-light-grey, #EAEAED)';\nconst DS_BG_HOVER = 'var(--redsift-color-neutral-xx-light-grey, #f8f9fc)';\nconst DS_BG_SELECTED = 'var(--redsift-color-neutral-x-light-grey, #F7F7F7)';\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: row;\n gap: 0;\n width: 100%;\n min-height: 400px;\n\n @media (max-width: 937px) {\n flex-direction: column;\n }\n`;\n\nexport const StyledSidebar = styled.aside`\n flex: 0 0 auto;\n width: 320px;\n border-right: 1px solid var(--sc-border-color-light, ${DS_BORDER_LIGHT});\n background: #ffffff;\n padding: 1.5rem 0 1.5rem 1.5rem;\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n overflow-y: auto;\n box-sizing: border-box;\n\n @media (max-width: 937px) {\n display: none;\n }\n`;\n\nexport const StyledMobileDropdownWrapper = styled.div`\n display: none;\n padding: 1rem 1.5rem;\n background: #ffffff;\n border-bottom: 1px solid var(--sc-border-color-light, ${DS_BORDER_LIGHT});\n\n @media (max-width: 937px) {\n display: block;\n }\n`;\n\nexport const StyledDropdownItemContent = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n width: 100%;\n padding: 0.75rem 0;\n`;\n\nexport const StyledDropdownItemMeta = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n min-width: 0;\n flex: 1;\n`;\n\nexport const StyledDropdownItemTitle = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n font-weight: 600;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n line-height: 1.5;\n`;\n\nexport const StyledDropdownItemDescription = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 13px;\n font-weight: 500;\n color: var(--sc-text-secondary, ${DS_TEXT_SECONDARY});\n line-height: 1.4;\n text-transform: capitalize;\n`;\n\nexport const StyledSection = styled.section`\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n`;\n\nexport const StyledSectionHeading = styled.h3`\n margin: 0;\n padding-right: 0.75rem;\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 16px;\n font-weight: 600;\n color: var(--sc-text-heading, ${DS_TEXT_HEADING});\n`;\n\nexport const StyledSignalList = styled.ul`\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n`;\n\ntype SignalListItemProps = {\n $selected: boolean;\n $status: CardStatus;\n};\n\nexport const StyledSignalListItem = styled.li<SignalListItemProps>`\n box-sizing: border-box;\n display: flex;\n gap: 0.75rem;\n align-items: flex-start;\n padding: 0.75rem 0.75rem;\n border-radius: 0;\n cursor: pointer;\n min-height: 72px;\n background: ${({ $selected }) => ($selected ? `var(--sc-bg-selected, ${DS_BG_SELECTED})` : '#ffffff')} !important;\n border: 1px solid transparent;\n border-left: none;\n border-right-width: 3px;\n border-right-style: solid;\n border-right-color: ${({ $selected }) => ($selected ? '#4285F4' : 'transparent')} !important;\n transition: background 0.2s ease, border-color 0.2s ease;\n position: relative;\n\n &:hover {\n background: ${({ $selected }) =>\n $selected ? `var(--sc-bg-selected, ${DS_BG_SELECTED})` : `var(--sc-bg-hover, ${DS_BG_HOVER})`} !important;\n }\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 1px;\n background: rgba(216, 220, 231, 0.5);\n }\n\n &:last-child::after {\n display: none;\n }\n`;\n\nexport const StyledStatusIconWrapper = styled.span<{ $status: CardStatus }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: 1.5rem;\n height: 1.5rem;\n margin-right: 0.25rem;\n\n svg {\n display: block;\n font-size: 18px !important;\n width: 18px;\n height: 18px;\n }\n`;\n\nexport const StyledSignalMeta = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n min-width: 0;\n color: #1b1d1f;\n`;\n\nexport const StyledSignalTitle = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n font-weight: 600;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n line-height: 1.5;\n`;\n\nexport const StyledSignalDescription = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 13px;\n font-weight: 500;\n color: var(--sc-text-secondary, ${DS_TEXT_SECONDARY});\n line-height: 1.4;\n text-transform: capitalize;\n`;\n\nexport const StyledDetailsPane = styled.div`\n flex: 1 1 auto;\n min-width: 0;\n overflow-y: auto;\n`;\n\nexport const StyledCardContainer = styled.div`\n border: none;\n border-radius: 0;\n background: #ffffff;\n overflow: hidden;\n`;\n\nexport const StyledCardWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n`;\n\n// ============================================================================\n// Outer wrapper + header bar\n// ============================================================================\n\nconst DS_BG_CONTAINER = 'var(--redsift-color-neutral-xx-light-grey, #f4f4f6)';\n\nexport const StyledOuterWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 35px;\n padding: 32px 0;\n width: 100%;\n background: var(--sc-bg-container, ${DS_BG_CONTAINER});\n border-radius: 16px;\n\n @media (max-width: 937px) {\n padding: 16px 0;\n gap: 24px;\n }\n`;\n\nexport const StyledHeaderBar = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 48px;\n gap: 24px;\n\n @media (max-width: 937px) {\n flex-direction: column;\n align-items: flex-start;\n padding: 0 24px;\n gap: 16px;\n }\n`;\n\nexport const StyledHeaderLeft = styled.div`\n display: flex;\n align-items: center;\n gap: 24px;\n flex: 1;\n min-width: 0;\n\n @media (max-width: 937px) {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n width: 100%;\n }\n`;\n\nexport const StyledEmailInfo = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n`;\n\nexport const StyledEmailLabel = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 16px;\n font-weight: 400;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n line-height: 1.5;\n`;\n\nexport const StyledEmailAddress = styled.span`\n font-family: var(--sc-font-heading, \"var(--redsift-typography-heading-font-family, 'Space Grotesk', sans-serif)\");\n font-size: 26px;\n font-weight: 500;\n color: #000000;\n line-height: 1.3;\n word-break: break-all;\n\n @media (max-width: 937px) {\n font-size: 18px;\n }\n`;\n\nexport const StyledEmailMeta = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 4px;\n`;\n\nexport const StyledEmailMetaItem = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n font-weight: 400;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n line-height: 1.4;\n`;\n\nexport const StyledEmailMetaLabel = styled.span`\n font-weight: 500;\n`;\n\nexport const StyledHeaderRight = styled.div`\n flex-shrink: 0;\n`;\n\nexport const StyledBrandingSection = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 6px;\n`;\n\nexport const StyledPoweredByText = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n font-weight: 400;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n line-height: 1.4;\n`;\n\nexport const StyledBrandingLogo = styled.img`\n display: block;\n height: 24px;\n width: auto;\n`;\n\nexport const StyledCheckAnotherButton = styled.button`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 24px;\n background: transparent;\n color: var(--sc-text-heading, ${DS_TEXT_HEADING});\n border: 2px solid var(--sc-text-heading, ${DS_TEXT_HEADING});\n border-radius: 8px;\n cursor: pointer;\n font-family: var(--sc-font-heading, \"var(--redsift-typography-heading-font-family, 'Space Grotesk', sans-serif)\");\n font-size: 18px;\n font-weight: 500;\n letter-spacing: 0.18px;\n line-height: 1.5;\n white-space: nowrap;\n transition: background 0.15s ease;\n\n &:hover {\n background: var(--sc-bg-hover, ${DS_BG_HOVER});\n }\n\n & > svg {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n }\n\n @media (max-width: 937px) {\n width: 100%;\n justify-content: center;\n font-size: 16px;\n padding: 8px 16px;\n }\n`;\n\nexport const StyledDivider = styled.hr`\n border: none;\n border-top: 1px solid var(--sc-border-divider, #e0e0e0);\n margin: 0 48px 24px;\n\n @media (max-width: 937px) {\n margin: 0 24px 24px;\n }\n`;\n","import React, { ComponentType, memo } from 'react';\nimport { Icon } from '@redsift/design-system';\nimport type { CardStatus } from '@redsift/signal-logic';\nimport { getCanonicalSignalType } from '@redsift/signal-logic';\nimport { SignalData } from './types';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport {\n SIGNAL_TYPES,\n BIMI_CHECKER_SIGNAL_TYPES,\n DOMAIN_ANALYZER_SIGNAL_TYPES,\n SIGNAL_CARD_POSITIONS,\n} from '@redsift/signal-logic';\nimport { STATUS_ICON_STYLES } from '@redsift/signal-logic';\nimport { SignalCardAmp } from '../SignalCardAmp';\nimport { SignalCardBimi } from '../SignalCardBimi';\nimport { SignalCardDkim } from '../SignalCardDkim';\nimport { SignalCardDkimDomainAnalyzer } from '../SignalCardDkimDomainAnalyzer';\nimport { SignalCardDmarc } from '../SignalCardDmarc';\nimport { SignalCardDmarcDomain } from '../SignalCardDmarcDomain';\nimport { SignalCardDnssec } from '../SignalCardDnssec';\nimport { SignalCardFcrdns } from '../SignalCardFcrdns';\nimport { SignalCardGoogleYahooCompliance } from '../SignalCardGoogleYahooCompliance';\nimport { SignalCardMtaSts } from '../SignalCardMtaSts';\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { SignalCardSpf } from '../SignalCardSpf';\nimport { SignalCardSpfDomain } from '../SignalCardSpfDomain';\nimport { SignalCardSpfDomainAnalyzer } from '../SignalCardSpfDomainAnalyzer';\nimport { SignalCardSubdo } from '../SignalCardSubdo';\nimport { SignalCardThreatInv } from '../SignalCardThreatInv';\nimport { SignalCardTls } from '../SignalCardTls';\nimport { SignalCardUrls } from '../SignalCardUrls';\nimport {\n StyledSection,\n StyledSectionHeading,\n StyledSignalList,\n StyledSignalListItem,\n StyledStatusIconWrapper,\n StyledSignalMeta,\n StyledSignalTitle,\n StyledSignalDescription,\n} from './styles';\n\n/**\n * Null component used when a card type is disabled.\n * Defined as a constant to avoid creating new function references on each render.\n */\nconst NullComponent: React.FC = () => null;\nNullComponent.displayName = 'NullComponent';\n\nexport const DEFAULT_CARD_ENABLED: Record<string, boolean> = {\n amp: true,\n bimi: true,\n dkim: true,\n dmarc: true,\n dnssec: true,\n emailProvider: false,\n fcrdns: true,\n mtaSts: true,\n spf: true,\n subdo: true,\n threatIntelligence: true,\n tls: true,\n urls: true,\n googleYahooCompliance: true,\n};\n\nconst SIGNAL_TYPE_FLAG_MAP: Record<string, keyof typeof DEFAULT_CARD_ENABLED> = {\n [SIGNAL_TYPES.SPF]: 'spf',\n [BIMI_CHECKER_SIGNAL_TYPES.SPF]: 'spf',\n [DOMAIN_ANALYZER_SIGNAL_TYPES.SPF]: 'spf',\n [SIGNAL_TYPES.SUBDO]: 'subdo',\n [DOMAIN_ANALYZER_SIGNAL_TYPES.SUBDO]: 'subdo',\n [SIGNAL_TYPES.TLS]: 'tls',\n [SIGNAL_TYPES.FCRDNS]: 'fcrdns',\n [SIGNAL_TYPES.DKIM]: 'dkim',\n [DOMAIN_ANALYZER_SIGNAL_TYPES.DKIM]: 'dkim',\n [SIGNAL_TYPES.DMARC]: 'dmarc',\n [BIMI_CHECKER_SIGNAL_TYPES.DMARC]: 'dmarc',\n [SIGNAL_TYPES.URLS]: 'urls',\n [SIGNAL_TYPES.THREATINV]: 'threatIntelligence',\n [DOMAIN_ANALYZER_SIGNAL_TYPES.THREATINV]: 'threatIntelligence',\n [SIGNAL_TYPES.BIMI]: 'bimi',\n [SIGNAL_TYPES.MTA_STS]: 'mtaSts',\n [SIGNAL_TYPES.DNSSEC]: 'dnssec',\n [SIGNAL_TYPES.AMP]: 'amp',\n [SIGNAL_TYPES.GOOGLE_YAHOO_COMPLIANCE]: 'googleYahooCompliance',\n};\n\nconst getCardFlagKey = (signalType: string): keyof typeof DEFAULT_CARD_ENABLED | undefined => {\n return SIGNAL_TYPE_FLAG_MAP[signalType];\n};\n\nexport const isSignalTypeEnabled = (signalType: string, isCardEnabledMap: Record<string, boolean>): boolean => {\n const flagKey = getCardFlagKey(signalType);\n if (!flagKey) return true;\n const flag = isCardEnabledMap[flagKey];\n return flag === undefined ? true : flag;\n};\n\nexport const SIGNAL_TITLE_MAP: Record<string, string> = {\n [SIGNAL_TYPES.DMARC]: 'DMARC',\n [SIGNAL_TYPES.SPF]: 'SPF',\n [SIGNAL_TYPES.DKIM]: 'DKIM',\n [SIGNAL_TYPES.SUBDO]: 'SPF Subdo Mailers',\n [SIGNAL_TYPES.TLS]: 'TLS',\n [SIGNAL_TYPES.FCRDNS]: 'FCrDNS',\n [SIGNAL_TYPES.URLS]: 'URLs',\n [SIGNAL_TYPES.THREATINV]: 'Threat Intelligence',\n [SIGNAL_TYPES.BIMI]: 'BIMI',\n [SIGNAL_TYPES.MTA_STS]: 'MTA-STS',\n [SIGNAL_TYPES.DNSSEC]: 'DNSSEC',\n [SIGNAL_TYPES.AMP]: 'AMP',\n [SIGNAL_TYPES.GOOGLE_YAHOO_COMPLIANCE]: 'Microsoft, Google and Yahoo Deliverability Compliance',\n // Domain Analyzer specific titles\n [DOMAIN_ANALYZER_SIGNAL_TYPES.DKIM]: 'DKIM Selector',\n [DOMAIN_ANALYZER_SIGNAL_TYPES.SUBDO]: 'No SubdoMailers Detected',\n};\n\nexport const getCardComponent = (signalType: string, isCardEnabledMap: Record<string, boolean>): ComponentType<any> => {\n switch (signalType) {\n case SIGNAL_TYPES.SPF:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardSpf;\n return NullComponent;\n case SIGNAL_TYPES.SUBDO:\n case DOMAIN_ANALYZER_SIGNAL_TYPES.SUBDO:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardSubdo;\n return NullComponent;\n case SIGNAL_TYPES.TLS:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardTls;\n return NullComponent;\n case SIGNAL_TYPES.FCRDNS:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardFcrdns;\n return NullComponent;\n case SIGNAL_TYPES.DKIM:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardDkim;\n return NullComponent;\n case SIGNAL_TYPES.DMARC:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardDmarc;\n return NullComponent;\n case SIGNAL_TYPES.URLS:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardUrls;\n return NullComponent;\n case SIGNAL_TYPES.THREATINV:\n case DOMAIN_ANALYZER_SIGNAL_TYPES.THREATINV:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardThreatInv;\n return NullComponent;\n case SIGNAL_TYPES.BIMI:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardBimi;\n return NullComponent;\n case SIGNAL_TYPES.MTA_STS:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardMtaSts;\n return NullComponent;\n case BIMI_CHECKER_SIGNAL_TYPES.SPF:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardSpfDomain;\n return NullComponent;\n case BIMI_CHECKER_SIGNAL_TYPES.DMARC:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardDmarcDomain;\n return NullComponent;\n case DOMAIN_ANALYZER_SIGNAL_TYPES.DKIM:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardDkimDomainAnalyzer;\n return NullComponent;\n case DOMAIN_ANALYZER_SIGNAL_TYPES.SPF:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardSpfDomainAnalyzer;\n return NullComponent;\n case SIGNAL_TYPES.DNSSEC:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardDnssec;\n return NullComponent;\n case SIGNAL_TYPES.AMP:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardAmp;\n return NullComponent;\n case SIGNAL_TYPES.GOOGLE_YAHOO_COMPLIANCE:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardGoogleYahooCompliance;\n return NullComponent;\n default:\n return SignalCardNormal;\n }\n};\n\nexport const getSignalPosition = (signalType: string): number => {\n return SIGNAL_CARD_POSITIONS[signalType as keyof typeof SIGNAL_CARD_POSITIONS] ?? Number.MAX_SAFE_INTEGER;\n};\n\nexport const getStatusIcon = (status: CardStatus) => {\n const config = STATUS_ICON_STYLES[status] ?? STATUS_ICON_STYLES.unknown;\n const { icon, color } = config;\n return <Icon icon={icon} size=\"small\" color={color} />;\n};\n\n/**\n * Check if a signal has the required data to render its card.\n * Returns true if the card would render content, false if it would return null.\n */\nexport const hasRequiredData = (signal: SignalData): boolean => {\n const { signalType, jmap } = signal;\n const extsecrep = jmap?.extsecrep;\n\n // URLs card reads from investigate, not extsecrep\n if (signalType === SIGNAL_TYPES.URLS) {\n const investigate = signal.investigate;\n const urls =\n investigate != null && typeof investigate === 'object' && 'urls' in investigate\n ? (investigate as { urls: unknown }).urls\n : undefined;\n return Array.isArray(urls) && urls.length > 0;\n }\n\n if (!extsecrep) return false;\n\n switch (signalType) {\n case SIGNAL_TYPES.BIMI:\n // SignalCardBimi: if (!bimi) return null\n return !!extsecrep.bimi;\n\n case SIGNAL_TYPES.DNSSEC:\n // SignalCardDnssec: if (!dnsSecurity) return null\n return !!extsecrep.dnsSecurity;\n\n case SIGNAL_TYPES.MTA_STS:\n // SignalCardMtaSts: if (!mtaInfo) return null\n // Also checks for tlsRecord, mtaStsRecord, mtaStsPolicy, mtaStsCertificate in buildMtaStsState\n return !!extsecrep.mta;\n\n case SIGNAL_TYPES.SUBDO:\n case DOMAIN_ANALYZER_SIGNAL_TYPES.SUBDO:\n // SignalCardSubdo: if (!spf) return null\n return !!extsecrep.spf;\n\n case BIMI_CHECKER_SIGNAL_TYPES.SPF:\n // SignalCardSpfDomain: if (!spf) return null\n return !!extsecrep.spf;\n\n case SIGNAL_TYPES.AMP:\n // SignalCardAMP: checks spfAlignmentDomains.length\n // This is derived from dmarc data, so check for dmarc\n return !!extsecrep.dmarc;\n\n case SIGNAL_TYPES.GOOGLE_YAHOO_COMPLIANCE:\n // Require at least one compliance data point before rendering the card\n return Boolean(extsecrep.dmarc || extsecrep.spf || extsecrep.dkim || extsecrep.tls || extsecrep.unsubscribe);\n\n case SIGNAL_TYPES.THREATINV:\n case DOMAIN_ANALYZER_SIGNAL_TYPES.THREATINV:\n // SignalCardThreatInv: if (!tl) return null\n return !!extsecrep.tl;\n\n // Most other cards have data or use fallbacks, so return true\n // These include: DMARC, DKIM, SPF, TLS, FCrDNS\n // Domain analyzer variants: DmarcDomain, DkimDomainAnalyzer, SpfDomainAnalyzer\n default:\n return true;\n }\n};\n\nexport const getSignalTitle = (signalType: string): string => {\n // Check for direct match first (for Domain Analyzer specific titles)\n if (SIGNAL_TITLE_MAP[signalType]) {\n return SIGNAL_TITLE_MAP[signalType];\n }\n // Fall back to canonical type\n const canonicalType = getCanonicalSignalType(signalType);\n return SIGNAL_TITLE_MAP[canonicalType] ?? canonicalType.replace(/_/g, ' ');\n};\n\nexport const getStatusLabel = (\n status: CardStatus,\n translate: ReturnType<typeof useSignalCardTranslation>['t']\n): string => {\n switch (status) {\n case 'good':\n return translate('signal-card-list.status.good') as string;\n case 'warning':\n return translate('signal-card-list.status.warning') as string;\n case 'danger':\n return translate('signal-card-list.status.danger') as string;\n case 'info':\n return translate('signal-card-list.status.info') as string;\n default:\n return translate('signal-card-list.status.unknown') as string;\n }\n};\n\n// Re-export from utils for consumers\nexport { getCanonicalSignalType };\n\n/**\n * Signal summary data for rendering in the sidebar list.\n */\nexport type SignalSummary = {\n signal: SignalData;\n title: string;\n description: string;\n status: CardStatus;\n statusLabel: string;\n canonicalType: string;\n CardComponent: ComponentType<any>;\n};\n\n/**\n * Props for the SignalListSection component.\n */\nexport type SignalListSectionProps = {\n /** Heading text for the section */\n heading: string;\n /** Array of signal summaries to render */\n signals: SignalSummary[];\n /** Currently selected signal type */\n activeSignalType: string | null;\n /** Callback when a signal is selected */\n onSelect: (signalType: string) => void;\n /** Callback for keyboard navigation */\n onKeyDown: (event: React.KeyboardEvent<HTMLLIElement>, signalType: string) => void;\n};\n\n/**\n * Renders a section of signal cards in the sidebar list.\n * Used for both priority and remaining signal sections to eliminate duplicate JSX.\n *\n * @example\n * ```tsx\n * <SignalListSection\n * heading=\"Required Signals\"\n * signals={prioritySignals}\n * activeSignalType={activeSignalType}\n * onSelect={handleSelect}\n * onKeyDown={handleKeyDown}\n * />\n * ```\n */\nexport const SignalListSection = memo<SignalListSectionProps>(function SignalListSection({\n heading,\n signals,\n activeSignalType,\n onSelect,\n onKeyDown,\n}) {\n if (!signals.length) {\n return null;\n }\n\n return (\n <StyledSection>\n <StyledSectionHeading>{heading}</StyledSectionHeading>\n <StyledSignalList role=\"tablist\" aria-orientation=\"vertical\">\n {signals.map(({ signal, title, description, status }) => {\n const isSelected = signal.signalType === activeSignalType;\n\n return (\n <StyledSignalListItem\n key={signal.signalType}\n $selected={isSelected}\n $status={status}\n onClick={() => onSelect(signal.signalType)}\n role=\"tab\"\n tabIndex={isSelected ? 0 : -1}\n aria-selected={isSelected}\n onKeyDown={(event: React.KeyboardEvent<HTMLLIElement>) => onKeyDown(event, signal.signalType)}\n >\n <StyledStatusIconWrapper $status={status}>{getStatusIcon(status)}</StyledStatusIconWrapper>\n <StyledSignalMeta>\n <StyledSignalTitle>{title}</StyledSignalTitle>\n {description ? <StyledSignalDescription>{description}</StyledSignalDescription> : null}\n </StyledSignalMeta>\n </StyledSignalListItem>\n );\n })}\n </StyledSignalList>\n </StyledSection>\n );\n});\n","import React, { forwardRef, useCallback, useEffect, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { TextField } from '@redsift/design-system';\nimport type { Comp } from '@redsift/design-system';\nimport { Select, Item } from '@redsift/pickers';\nimport { mdiSync } from '@redsift/icons';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport ondmarcLogoSvg from '../../assets/ondmarc-logo.svg';\nimport { useResolvedTheme, SignalCardThemeProvider } from '../../hooks/useSignalCardTheme';\nimport { getSignalStatus } from '@redsift/signal-logic';\nimport { DEFAULT_PRIORITY_SIGNAL_TYPES } from '@redsift/signal-logic';\nimport { SignalCardErrorBoundary } from '../../components/ErrorBoundary';\nimport { SignalCardListProps } from './types';\nimport { RecommendationsSummary } from './RecommendationsSummary';\nimport {\n DEFAULT_CARD_ENABLED,\n getCardComponent,\n getSignalPosition,\n getStatusIcon,\n getCanonicalSignalType,\n hasRequiredData,\n getSignalTitle,\n getStatusLabel,\n isSignalTypeEnabled,\n SignalListSection,\n} from './helpers';\nimport {\n StyledContainer,\n StyledSidebar,\n StyledMobileDropdownWrapper,\n StyledDropdownItemContent,\n StyledDropdownItemMeta,\n StyledDropdownItemTitle,\n StyledDropdownItemDescription,\n StyledStatusIconWrapper,\n StyledDetailsPane,\n StyledCardContainer,\n StyledCardWrapper,\n StyledOuterWrapper,\n StyledHeaderBar,\n StyledHeaderLeft,\n StyledEmailInfo,\n StyledEmailLabel,\n StyledEmailAddress,\n StyledEmailMeta,\n StyledEmailMetaItem,\n StyledEmailMetaLabel,\n StyledHeaderRight,\n StyledBrandingSection,\n StyledPoweredByText,\n StyledBrandingLogo,\n StyledCheckAnotherButton,\n StyledDivider,\n} from './styles';\n\nconst COMPONENT_NAME = 'SignalCardList';\nconst CLASSNAME = 'redsift-signal-card-list';\n\nexport const SignalCardList: Comp<SignalCardListProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardListProps\n>(function SignalCardList(\n {\n signals = [],\n error,\n isCardEnabledMap = DEFAULT_CARD_ENABLED,\n prioritySignalTypes = DEFAULT_PRIORITY_SIGNAL_TYPES,\n initialSelectedSignalType = null,\n onSelectSignalType,\n renderCardHeader,\n cardPromoHref,\n renderCardFooter,\n prioritySectionHeading,\n remainingSectionHeading,\n useInvestigateColors: useInvestigateColorsOverride,\n isCollapsible = true,\n areAllCollapsed,\n onCollapseAll,\n // Recommendations props\n recommendations,\n recommendationsLoading,\n showRecommendations = true,\n recommendationsCTA,\n onExpandSignalCard,\n // Header props\n onCheckAnotherEmail,\n renderHeaderAction,\n className,\n ...forwardedProps\n },\n ref\n) {\n const { t } = useSignalCardTranslation('investigate');\n const { useInvestigateColors } = useResolvedTheme(useInvestigateColorsOverride);\n const [activeSignalType, setActiveSignalType] = useState<string | null>(initialSelectedSignalType);\n\n const mergedIsCardEnabledMap = useMemo(() => {\n return { ...DEFAULT_CARD_ENABLED, ...isCardEnabledMap } as Record<string, boolean>;\n }, [isCardEnabledMap]);\n\n const sortedSignals = useMemo(() => {\n return [...signals].sort((a, b) => getSignalPosition(a.signalType) - getSignalPosition(b.signalType));\n }, [signals]);\n\n const summaries = useMemo(() => {\n return sortedSignals\n .filter((signal) => hasRequiredData(signal) && isSignalTypeEnabled(signal.signalType, mergedIsCardEnabledMap))\n .map((signal) => {\n const title = getSignalTitle(signal.signalType);\n const status = getSignalStatus({\n signalType: signal.signalType,\n signal,\n });\n const statusLabel = getStatusLabel(status, t);\n const canonicalType = getCanonicalSignalType(signal.signalType);\n const CardComponent = getCardComponent(signal.signalType, mergedIsCardEnabledMap);\n\n return {\n signal,\n title,\n description: statusLabel,\n status,\n statusLabel,\n canonicalType,\n CardComponent,\n };\n });\n }, [sortedSignals, t, mergedIsCardEnabledMap]);\n\n const canonicalPriority = useMemo(() => {\n return (prioritySignalTypes ?? DEFAULT_PRIORITY_SIGNAL_TYPES).map(getCanonicalSignalType);\n }, [prioritySignalTypes]);\n\n const prioritySignals = useMemo(() => {\n const orderedSignals: typeof summaries = [];\n const seenSignalTypes = new Set<string>();\n\n canonicalPriority.forEach((canonicalType: string) => {\n summaries.forEach((summary) => {\n if (summary.canonicalType === canonicalType && !seenSignalTypes.has(summary.signal.signalType)) {\n orderedSignals.push(summary);\n seenSignalTypes.add(summary.signal.signalType);\n }\n });\n });\n\n return orderedSignals;\n }, [summaries, canonicalPriority]);\n\n const prioritySignalTypeSet = useMemo(() => {\n return new Set(prioritySignals.map(({ signal }) => signal.signalType));\n }, [prioritySignals]);\n\n const remainingSignals = useMemo(() => {\n return summaries.filter(({ signal }) => !prioritySignalTypeSet.has(signal.signalType));\n }, [summaries, prioritySignalTypeSet]);\n\n const allSignalsForDropdown = useMemo(() => {\n return [...prioritySignals, ...remainingSignals];\n }, [prioritySignals, remainingSignals]);\n\n // Sync with external controlled selection\n useEffect(() => {\n if (initialSelectedSignalType !== null) {\n setActiveSignalType(initialSelectedSignalType);\n }\n }, [initialSelectedSignalType]);\n\n useEffect(() => {\n const availableTypes = allSignalsForDropdown.map(({ signal }) => signal.signalType);\n if (activeSignalType && availableTypes.includes(activeSignalType)) {\n return;\n }\n\n const defaultSignal = allSignalsForDropdown[0]?.signal ?? null;\n const nextType = defaultSignal?.signalType ?? null;\n\n if (nextType === activeSignalType) {\n return;\n }\n\n setActiveSignalType(nextType);\n if (nextType) {\n onSelectSignalType?.(nextType);\n }\n }, [allSignalsForDropdown, activeSignalType, onSelectSignalType]);\n\n const noopHeightChange = useCallback(() => {}, []);\n\n const handleSelect = useCallback(\n (signalType: string) => {\n // Only update if it's actually different\n if (activeSignalType !== signalType) {\n setActiveSignalType(signalType);\n onSelectSignalType?.(signalType);\n }\n },\n [activeSignalType, onSelectSignalType]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLLIElement>, signalType: string) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleSelect(signalType);\n } else if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n const currentIndex = allSignalsForDropdown.findIndex((s) => s.signal.signalType === signalType);\n if (currentIndex === -1) return;\n\n let nextIndex = currentIndex;\n if (event.key === 'ArrowDown') {\n nextIndex = (currentIndex + 1) % allSignalsForDropdown.length;\n } else {\n nextIndex = (currentIndex - 1 + allSignalsForDropdown.length) % allSignalsForDropdown.length;\n }\n\n const nextSignal = allSignalsForDropdown[nextIndex];\n handleSelect(nextSignal.signal.signalType);\n\n // Note: Ideally we should also move focus to the new item, but since we're changing selection\n // and re-rendering, we rely on the user to tab or the screen reader to announce the change.\n // For a robust implementation, we would need refs to all list items.\n }\n },\n [allSignalsForDropdown, handleSelect]\n );\n\n // Determine if recommendations section should render\n const shouldShowRecommendations = showRecommendations && (recommendations || recommendationsLoading);\n\n // Extract checked email, subject, and date from the first signal that has jmap.from.email\n const { checkedEmail, emailSubject, emailDate } = useMemo(() => {\n for (const signal of signals) {\n const email = (signal.jmap?.from as { email?: string } | undefined)?.email;\n if (email)\n return {\n checkedEmail: email,\n emailSubject: signal.jmap?.subject as string | undefined,\n emailDate: signal.jmap?.date as string | undefined,\n };\n }\n return { checkedEmail: undefined, emailSubject: undefined, emailDate: undefined };\n }, [signals]);\n\n if (error) {\n return (\n <div>\n <h2>{error.name}</h2>\n <h2>{error.message}</h2>\n <code>{error.stack}</code>\n </div>\n );\n }\n\n const showHeader = !!checkedEmail;\n\n return (\n <SignalCardThemeProvider theme={{ useInvestigateColors }}>\n {(showHeader || shouldShowRecommendations) && (\n <StyledOuterWrapper>\n {showHeader && (\n <>\n <StyledHeaderBar data-testid=\"signal-card-list-header\">\n <StyledHeaderLeft>\n <StyledEmailInfo>\n <StyledEmailLabel>{t('signal-card-list.checked-email-label')}</StyledEmailLabel>\n <StyledEmailAddress>{checkedEmail}</StyledEmailAddress>\n {(emailSubject || emailDate) && (\n <StyledEmailMeta>\n {emailSubject && (\n <StyledEmailMetaItem>\n <StyledEmailMetaLabel>{t('subject')}:</StyledEmailMetaLabel> {emailSubject}\n </StyledEmailMetaItem>\n )}\n {emailDate && (\n <StyledEmailMetaItem>\n <StyledEmailMetaLabel>{t('date')}:</StyledEmailMetaLabel>{' '}\n {new Date(emailDate).toLocaleString(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </StyledEmailMetaItem>\n )}\n </StyledEmailMeta>\n )}\n </StyledEmailInfo>\n {renderHeaderAction\n ? renderHeaderAction()\n : onCheckAnotherEmail && (\n <StyledCheckAnotherButton type=\"button\" onClick={onCheckAnotherEmail}>\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d={mdiSync} />\n </svg>\n {t('signal-card-list.check-another-email')}\n </StyledCheckAnotherButton>\n )}\n </StyledHeaderLeft>\n <StyledHeaderRight>\n <StyledBrandingSection>\n <StyledPoweredByText>{t('signal-card-list.powered-by')}</StyledPoweredByText>\n <StyledBrandingLogo src={ondmarcLogoSvg} alt=\"OnDMARC\" />\n </StyledBrandingSection>\n </StyledHeaderRight>\n </StyledHeaderBar>\n {shouldShowRecommendations && <StyledDivider />}\n </>\n )}\n {shouldShowRecommendations && (\n <RecommendationsSummary\n recommendations={recommendations}\n loading={recommendationsLoading}\n cta={recommendationsCTA}\n onExpandSignalCard={onExpandSignalCard}\n />\n )}\n </StyledOuterWrapper>\n )}\n <StyledContainer\n ref={ref as any}\n className={classNames(CLASSNAME, className)}\n {...forwardedProps}\n data-testid=\"signal-card-list\"\n >\n <StyledMobileDropdownWrapper>\n <Select value={activeSignalType || ''} onChange={handleSelect} width=\"trigger-width\" wrapperProps={{ width: '100%' }}>\n <Select.Trigger>\n {({ value }: { value?: string }) => {\n const summary = allSignalsForDropdown.find((s) => s.signal.signalType === value);\n return <TextField label=\"Select Signal\" value={summary?.title ?? ''} isReadOnly width=\"100%\" />;\n }}\n </Select.Trigger>\n <Select.Content>\n {allSignalsForDropdown.map(({ signal, title, status, statusLabel }) => (\n <Item key={signal.signalType} value={signal.signalType}>\n <StyledDropdownItemContent>\n <StyledStatusIconWrapper $status={status}>{getStatusIcon(status)}</StyledStatusIconWrapper>\n <StyledDropdownItemMeta>\n <StyledDropdownItemTitle>{title}</StyledDropdownItemTitle>\n <StyledDropdownItemDescription>{statusLabel}</StyledDropdownItemDescription>\n </StyledDropdownItemMeta>\n </StyledDropdownItemContent>\n </Item>\n ))}\n </Select.Content>\n </Select>\n </StyledMobileDropdownWrapper>\n\n <StyledSidebar>\n <SignalListSection\n heading={prioritySectionHeading ?? t('signal-card-list.required-signals')}\n signals={prioritySignals}\n activeSignalType={activeSignalType}\n onSelect={handleSelect}\n onKeyDown={handleKeyDown}\n />\n <SignalListSection\n heading={remainingSectionHeading ?? t('signal-card-list.remaining-signals')}\n signals={remainingSignals}\n activeSignalType={activeSignalType}\n onSelect={handleSelect}\n onKeyDown={handleKeyDown}\n />\n </StyledSidebar>\n\n <StyledDetailsPane role=\"tabpanel\">\n {summaries.map((summary) => {\n const { signal, CardComponent } = summary;\n const isSelected = signal.signalType === activeSignalType;\n if (!CardComponent) return null;\n\n return (\n <StyledCardWrapper key={signal.signalType} style={{ display: isSelected ? 'flex' : 'none' }}>\n <StyledCardContainer>\n <SignalCardErrorBoundary signalType={signal.signalType}>\n <CardComponent\n {...signal}\n domain={\n signal.jmap?.extsecrep?.dmarc?.fromDomain ?? signal.jmap?.extsecrep?.spf?.domain ?? undefined\n }\n onHeightChange={noopHeightChange}\n renderHeader={renderCardHeader ? () => renderCardHeader(signal) : undefined}\n promoHref={cardPromoHref}\n renderFooter={renderCardFooter ? () => renderCardFooter(signal) : undefined}\n useInvestigateColors={useInvestigateColors}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n />\n </SignalCardErrorBoundary>\n </StyledCardContainer>\n </StyledCardWrapper>\n );\n })}\n </StyledDetailsPane>\n </StyledContainer>\n </SignalCardThemeProvider>\n );\n});\n\nSignalCardList.className = CLASSNAME;\nSignalCardList.displayName = COMPONENT_NAME;\n","/* istanbul ignore file */\n/**\n * Signal Cards Components (@redsift/products)\n *\n * Email security signal visualization components for the Investigate tool.\n * Part of the Red Sift Design System Products package.\n *\n * @packageDocumentation\n * @module SignalCards\n *\n * @example\n * ```tsx\n * import { SignalCardList, SignalCardThemeProvider } from '@redsift/products';\n *\n * // Basic usage with SignalCardList\n * <SignalCardThemeProvider>\n * <SignalCardList signals={signals} />\n * </SignalCardThemeProvider>\n *\n * // Individual card usage\n * <SignalCardDmarc jmap={emailData.jmap} />\n * ```\n */\n\nimport { withSignalCardTheme } from './hooks/withSignalCardTheme';\nimport { SignalCardList as BaseSignalCardList } from './cards/SignalCardList';\nimport { SignalCardDmarc as BaseSignalCardDmarc } from './cards/SignalCardDmarc';\nimport { SignalCardSpf as BaseSignalCardSpf } from './cards/SignalCardSpf';\nimport { SignalCardDkim as BaseSignalCardDkim } from './cards/SignalCardDkim';\nimport { SignalCardFcrdns as BaseSignalCardFcrdns } from './cards/SignalCardFcrdns';\nimport { SignalCardTls as BaseSignalCardTls } from './cards/SignalCardTls';\nimport { SignalCardDmarcDomain as BaseSignalCardDmarcDomain } from './cards/SignalCardDmarcDomain';\nimport { SignalCardSpfDomain as BaseSignalCardSpfDomain } from './cards/SignalCardSpfDomain';\nimport { SignalCardSpfDomainAnalyzer as BaseSignalCardSpfDomainAnalyzer } from './cards/SignalCardSpfDomainAnalyzer';\nimport { SignalCardDkimDomainAnalyzer as BaseSignalCardDkimDomainAnalyzer } from './cards/SignalCardDkimDomainAnalyzer';\nimport { SignalCardBimi as BaseSignalCardBimi } from './cards/SignalCardBimi';\nimport { SignalCardMtaSts as BaseSignalCardMtaSts } from './cards/SignalCardMtaSts';\nimport { SignalCardSubdo as BaseSignalCardSubdo } from './cards/SignalCardSubdo';\nimport { SignalCardThreatInv as BaseSignalCardThreatInv } from './cards/SignalCardThreatInv';\nimport { SignalCardDnssec as BaseSignalCardDnssec } from './cards/SignalCardDnssec';\nimport { SignalCardAmp as BaseSignalCardAmp } from './cards/SignalCardAmp';\nimport { SignalCardUrls as BaseSignalCardUrls } from './cards/SignalCardUrls';\nimport { SignalCardGoogleYahooCompliance as BaseSignalCardGoogleYahooCompliance } from './cards/SignalCardGoogleYahooCompliance';\n\nconst SignalCardList = withSignalCardTheme(BaseSignalCardList);\nconst SignalCardDmarc = withSignalCardTheme(BaseSignalCardDmarc);\nconst SignalCardSpf = withSignalCardTheme(BaseSignalCardSpf);\nconst SignalCardDkim = withSignalCardTheme(BaseSignalCardDkim);\nconst SignalCardFcrdns = withSignalCardTheme(BaseSignalCardFcrdns);\nconst SignalCardTls = withSignalCardTheme(BaseSignalCardTls);\nconst SignalCardDmarcDomain = withSignalCardTheme(BaseSignalCardDmarcDomain);\nconst SignalCardSpfDomain = withSignalCardTheme(BaseSignalCardSpfDomain);\nconst SignalCardSpfDomainAnalyzer = withSignalCardTheme(BaseSignalCardSpfDomainAnalyzer);\nconst SignalCardDkimDomainAnalyzer = withSignalCardTheme(BaseSignalCardDkimDomainAnalyzer);\nconst SignalCardBimi = withSignalCardTheme(BaseSignalCardBimi);\nconst SignalCardMtaSts = withSignalCardTheme(BaseSignalCardMtaSts);\nconst SignalCardSubdo = withSignalCardTheme(BaseSignalCardSubdo);\nconst SignalCardThreatInv = withSignalCardTheme(BaseSignalCardThreatInv);\nconst SignalCardDnssec = withSignalCardTheme(BaseSignalCardDnssec);\nconst SignalCardAmp = withSignalCardTheme(BaseSignalCardAmp);\nconst SignalCardUrls = withSignalCardTheme(BaseSignalCardUrls);\nconst SignalCardGoogleYahooCompliance = withSignalCardTheme(BaseSignalCardGoogleYahooCompliance);\n\n// ============================================================================\n// MAIN COMPONENTS\n// ============================================================================\n\n/**\n * Main signal card list component with sidebar navigation.\n * Displays multiple signal cards in a sidebar/detail layout.\n *\n * @see {@link SignalCardListProps} for configuration options\n */\nexport { SignalCardList };\nexport type { SignalCardListProps, SignalData } from './cards/SignalCardList';\nexport type { RecommendationsData, RecommendationsAnalysis, RecommendationSignal } from './types/recommendations';\n\n// ============================================================================\n// INDIVIDUAL SIGNAL CARD COMPONENTS\n// ============================================================================\n// These can be used standalone for domain analyzer or storybook integration\n\n/**\n * DMARC signal card - displays DMARC authentication results and policy analysis.\n * Shows alignment status, policy enforcement, and reporting configuration.\n */\nexport { SignalCardDmarc };\nexport type { SignalCardDmarcProps } from './cards/SignalCardDmarc';\n\n/**\n * SPF signal card - displays SPF authentication results.\n * Shows DNS lookup count, mechanism evaluation, and pass/fail status.\n */\nexport { SignalCardSpf };\nexport type { SignalCardSpfProps } from './cards/SignalCardSpf';\n\n/**\n * DKIM signal card - displays DKIM signature verification results.\n * Shows signing domain, selector, key info, and canonicalization details.\n */\nexport { SignalCardDkim };\nexport type { SignalCardDkimProps } from './cards/SignalCardDkim';\n\n/**\n * FCrDNS signal card - displays Forward-Confirmed Reverse DNS results.\n * Visualizes sender IP, PTR records, and EHLO verification with Sankey diagrams.\n */\nexport { SignalCardFcrdns };\nexport type { SignalCardFcrdnsProps } from './cards/SignalCardFcrdns';\n\n/**\n * TLS signal card - displays TLS encryption status.\n * Shows SSL/TLS version, cipher suite, and certificate information.\n */\nexport { SignalCardTls };\nexport type { SignalCardTlsProps } from './cards/SignalCardTls';\n\n/**\n * DMARC Domain card - domain analyzer variant for DMARC analysis.\n */\nexport { SignalCardDmarcDomain };\nexport type { SignalCardDmarcDomainProps } from './cards/SignalCardDmarcDomain';\n\n/**\n * SPF Domain card - domain analyzer variant for SPF record analysis.\n */\nexport { SignalCardSpfDomain };\nexport type { SignalCardSpfDomainProps } from './cards/SignalCardSpfDomain';\n\n/**\n * SPF Domain Analyzer card - specialized for domain-only SPF analysis.\n */\nexport { SignalCardSpfDomainAnalyzer };\nexport type { SignalCardSpfDomainAnalyzerProps } from './cards/SignalCardSpfDomainAnalyzer';\n\n/**\n * DKIM Domain Analyzer card - specialized for domain-only DKIM analysis.\n */\nexport { SignalCardDkimDomainAnalyzer };\nexport type { SignalCardDkimDomainAnalyzerProps } from './cards/SignalCardDkimDomainAnalyzer';\n\n/**\n * BIMI signal card - displays Brand Indicators for Message Identification status.\n * Shows SVG logo, VMC/CMC certificate validation, and BIMI record analysis.\n */\nexport { SignalCardBimi };\nexport type { SignalCardBimiProps } from './cards/SignalCardBimi';\n\n/**\n * MTA-STS signal card - displays Mail Transfer Agent Strict Transport Security status.\n * Shows policy mode, MX hosts, and max-age configuration.\n */\nexport { SignalCardMtaSts };\nexport type { SignalCardMtaStsProps } from './cards/SignalCardMtaSts';\n\n/**\n * Subdo signal card - displays subdomain analysis results.\n */\nexport { SignalCardSubdo };\nexport type { SignalCardSubdoProps } from './cards/SignalCardSubdo';\n\n/**\n * ThreatInv signal card - displays threat intelligence analysis.\n */\nexport { SignalCardThreatInv };\nexport type { SignalCardThreatInvProps } from './cards/SignalCardThreatInv';\n\n/**\n * DNSSEC signal card - displays DNS Security Extensions status.\n */\nexport { SignalCardDnssec };\nexport type { SignalCardDnssecProps } from './cards/SignalCardDnssec';\n\n/**\n * AMP signal card - displays Accelerated Mobile Pages email analysis.\n */\nexport { SignalCardAmp };\nexport type { SignalCardAmpProps } from './cards/SignalCardAmp';\n\n/**\n * URLs signal card - displays URL safety analysis from email content.\n */\nexport { SignalCardUrls };\nexport type { SignalCardUrlsProps } from './cards/SignalCardUrls';\n\n/**\n * Google/Yahoo Compliance signal card - displays bulk sender compliance status.\n */\nexport { SignalCardGoogleYahooCompliance };\nexport type { SignalCardGoogleYahooComplianceProps } from './cards/SignalCardGoogleYahooCompliance';\n\n// ============================================================================\n// SIGNAL TYPES & CONSTANTS\n// ============================================================================\n\n/**\n * Signal type constants organized by data source.\n *\n * - `SIGNAL_TYPES` - All available signal types\n * - `PUBLIC_INVESTIGATE_SIGNAL_TYPES` - Signals from email analysis\n * - `BIMI_CHECKER_SIGNAL_TYPES` - Signals from BIMI checker tool\n * - `DOMAIN_ANALYZER_SIGNAL_TYPES` - Signals from domain analyzer tool\n */\nexport {\n SIGNAL_TYPES,\n PUBLIC_INVESTIGATE_SIGNAL_TYPES,\n BIMI_CHECKER_SIGNAL_TYPES,\n DOMAIN_ANALYZER_SIGNAL_TYPES,\n type SignalType,\n type PublicInvestigateSignalType,\n type BimiCheckerSignalType,\n type DomainAnalyzerSignalType,\n} from '@redsift/signal-logic';\n\n/**\n * Card status constant — canonical status values (good, warning, danger, info, unknown).\n * For status utility functions (normalizeStatus, getStatusColor, etc.),\n * import directly from '@redsift/signal-logic'.\n */\nexport { CARD_STATUS } from '@redsift/signal-logic';\n\n// ============================================================================\n// THEME CONTEXT\n// ============================================================================\n\n/**\n * Theme context for configuring signal card appearance.\n * Wrap your app to provide consistent theming across all signal cards.\n *\n * @example\n * ```tsx\n * <SignalCardThemeProvider useInvestigateColors>\n * <SignalCardList signals={signals} />\n * </SignalCardThemeProvider>\n * ```\n */\nexport {\n SignalCardThemeProvider,\n useSignalCardTheme,\n useResolvedTheme,\n type SignalCardTheme,\n type SignalCardThemeProviderProps,\n} from './hooks';\n\n// ============================================================================\n// UI COMPONENTS\n// ============================================================================\n\n/**\n * Checklist item type for signal card internal checklist displays.\n */\nexport type { ChecklistItem } from './components/ui/Checklist/Checklist';\n\n// ============================================================================\n// GLOSSARY COMPONENTS\n// ============================================================================\n\n/**\n * Glossary term components for displaying email security terminology\n * with consistent styling and tooltips.\n *\n * @example\n * ```tsx\n * <From /> // Renders styled \"From\" glossary term\n * <GlossaryTerm label=\"Custom Term\" colorName=\"blue\" />\n * ```\n */\nexport * from './components/glossary/glossary';\n\n// ============================================================================\n// UTILITY FUNCTIONS\n// ============================================================================\n\n/**\n * Get the status (good/warning/danger) for a signal based on its data.\n * Used for determining card colors and icons.\n */\nexport { getSignalStatus } from '@redsift/signal-logic';\n\n// ============================================================================\n// INTERNAL NOTES\n// ============================================================================\n// Other signal card components, hooks, and internal utilities are not exported\n// as they are implementation details used internally by SignalCardList\n"],"names":["ErrorContainer","styled","div","ErrorTitle","h4","ErrorMessage","p","SignalCardErrorBoundary","Component","constructor","props","state","hasError","error","getDerivedStateFromError","componentDidUpdate","prevProps","resetKey","setState","componentDidCatch","errorInfo","signalType","onError","signalCardsLogger","componentStack","render","children","fallback","React","createElement","role","toUpperCase","message","CORE_PROTOCOLS","PROTOCOL_LABEL_KEYS","dmarc","spf","dkim","tls","fcrdns","mta_sts","bimi","dnssec","urls","threat_intelligence","amp","subdo","google_yahoo_compliance","ANALYSIS_KEYS","STATUS_COLORS","danger","warning","good","not_configured","info","unknown","shimmer","keyframes","spin","BREAKPOINT_MOBILE","BREAKPOINT_STACK","Container","ContentLayout","AnalysisColumn","AnalysisCard","AnalysisCardInner","AnalysisHeader","AnalysisTitle","AIBadge","span","BulletList","ul","BulletItem","li","Bullet","BulletText","CTASlot","CTATextContent","CTATitle","CTADescription","CTAButtonWrapper","CTAButton","button","StatusColumn","StatusCard","_ref","$status","StatusHeader","StatusIconWrapper","_ref2","StatusLabel","StatusContent","StatusMessage","DetailsLink","SkeletonContainer","SkeletonLoadingHeader","SkeletonSpinner","SkeletonLoadingText","SkeletonRow","SkeletonBullet","SkeletonLine","_ref3","$width","SkeletonStatusCard","SkeletonStatusLabel","SkeletonStatusMessage","DangerIcon","width","height","viewBox","fill","xmlns","d","stroke","strokeWidth","strokeLinecap","WarningIcon","strokeLinejoin","GoodIcon","InfoIcon","UnknownIcon","ErrorIcon","NotConfiguredIcon","strokeDasharray","getStatusIcon","status","LoadingSkeleton","t","useSignalCardTranslation","src","aiBadgeSvg","alt","map","w","key","protocol","RecommendationsSummary","recommendations","loading","cta","onExpandSignalCard","analysis","signals","analysisItems","text","filter","length","title","description","type","onClick","onClickCTA","buttonLabel","signalData","protocolLabel","summary","COMPONENT_NAME","CLASSNAME","SignalCardAmp","forwardRef","ref","className","onHeightChange","jmap","bannerVariant","renderFooter","useInvestigateColors","isCollapsible","areAllCollapsed","onCollapseAll","forwardedProps","_objectWithoutProperties","_excluded","extsecrep","resolvedAreAllCollapsed","handleCollapseAll","resolvedIsCollapsible","useCollapseController","extData","useMemo","adaptAmpExtractor","getTranslatedCaption","caption","undefined","EXTRACTION_CAPTION_KEYS","sections","infoItemsCategories","extractedItemsCategories","cat","items","i","_cat$extractionBox","id","testId","extractionBox","content","ExtractedCategoryContent","category","Checklist","cardType","SignalCardNormal","_extends","classNames","shortDescription","longDescription","displayName","SignalCardDkim","areAllCollapsedProp","onCollapseAllProp","rest","internalCollapsed","setInternalCollapsed","useState","useCallback","collapsed","computeInitialState","_parsedResults$initia","_initialResult$cardTy","_initialResult$infoIt","_initialResult$infoIt2","_initialResult$extrac","parsedResults","initialIndex","addResult","entry","idx","_entry$signature$sign","_entry$signature","parsed","adaptDkimExtractor","signerDomain","signature","push","_objectSpread","dkimDomain","Array","isArray","forEach","resultOptions","result","label","initialResult","dkimResults","resultSelected","infoItems","infoItemsCategoriesDkim","useEffect","onResultsChange","selected","prev","setTimeout","sectionIds","s","optionsLabel","customSectionOrder","STATUS","Object","freeze","PASS","WARNING","FAIL","ERROR","INFO","SelectorSection","NoSelectorsContainer","getCardType","record","_record$issues","_record$key","_record$records","_record$keyStatus$key","_record$keyStatus","statuses","issues","issue","Boolean","keyType","k","records","hasFail","includes","hasWarning","keyStatus","keySize","DKIM_KEY","VALID_LENGTH","getStatusType","buildNoSelectorContent","returnObjects","lines","line","trim","parseGlossaryMarkdown","SelectorDropdown","currentRecord","selectedRecordIndex","cardTypesSummary","onSelectChange","_currentRecord$select","Flexbox","alignItems","gap","selector","TooltipInPortalWrapper","count","Icon","icon","mdiCheck","color","size","mdiAlert","mdiClose","COLOR","main","red","Select","value","String","onChange","Number","Trigger","_record$entry$split$","_record$entry","_record$entry$split","displayText","split","TextField","isReadOnly","Content","_ref4","_record$entry$split$2","_record$entry2","_record$entry2$split","Item","SignalCardDkimDomainAnalyzer","_adapterResult$select","_currentSelectorData$","_currentSelectorData$2","namespaces","useMultiNamespaceTranslation","adapterResult","_domain","adaptDomainAnalyzerDkimExtractor","domain","_record$selector","replace","setSelectedRecordIndex","recordCount","maxIndex","_records$selectedReco","currentCardType","reduce","acc","_acc$status","mdiEmail","white","introDescription","currentSelectorData","selectorResults","catIdx","_cat$items","item","cname","withArrow","splice","margin","mdiArrowDownBold","inline","SAND","getEmailComplianceState","alignDkim","alignSpf","policy","_dmarc$policy","_dmarc$policy$rua","_dmarc$raw","hasRua","rua","test","raw","getDomainPolicyState","sp","pct","isSpWeak","EMAIL_STATUS","pass","none","permerror","temperror","DOMAIN_STATUS","ICON_FOR_STATUS","ICON_COLOR_FOR_STATUS","StyledRow","StyledBox","StyledTitleRow","StyledIconWrapper","StyledTitle","FONT","TYPE","HEADING","StyledBody","TEXT","SummaryBox","body","TRANSLATABLE_REPORT_MESSAGES","Set","getTranslatableReportWarnings","report","r","has","hasReportWarnings","DmarcSummaryBoxes","_dmarc$policy$pct","_dmarc$policy2","_dmarc$policy3","_dmarc$policy3$rua","_dmarc$raw2","isDomainAnalyzer","domainState","emailState","reportWarnings","getDomainBody","warnings","params","join","getEmailBody","SignalCardDmarc","renderHeader","promoHref","adaptDmarcExtractor","effectiveRenderHeader","bannerContent","DmarcPromoBanner","href","Fragment","SignalCardDnssec","_jmap$extsecrep","dnsSecurity","adaptDnssecExtractor","SignalCardFcrdns","_investigate$fcrdns","_investigate$ehloChec","investigate","ehloCheck","ehlo","adaptFcrdnsExtractor","DS_FONT_BODY","DS_TEXT_COLOR","DS_WARNING_COLOR","StyledIntroWrapper","StyledWarningMessage","extractData","tRoot","data","extractGoogleYahooComplianceData","spfStatus","dkimStatus","spfAlignStatus","dkimAlignStatus","spfPolicy","dkimPolicy","dmarcStatus","dmarcPolicy","senderIpStatus","ehloStatus","senderIpMatchesEhloARecordStatus","tlsStatus","tlsVersion","oneClickUnsubStatus","Link","target","spfDkimCategory","statusToTranslationKey","alignmentCategory","dmarcCategory","fcrdnsCategory","reputationCategory","tlsCategory","version","oneClickUnsubCategory","defaultValue","SignalCardGoogleYahooCompliance","index","i18nRoot","SignalCardMtaSts","mtaInfo","mta","adaptMtaStsExtractor","infoTlsRpt","extractedTlsRptCategories","infoMtaSts","extractedMtaStsCategories","infoPolicy","extractedItemsPolicy","infoCertificate","SignalCardSpf","restProps","spfCheckerLink","buildSPFCheckerLink","ctaButtonName","onCTAButtonClick","window","open","spfPassResult","getSpfPassResult","spfResults","spfTypes","identity","availableIdentities","adaptSpfExtractor","Ehlo","ReturnPath","firstResult","nextResult","Label","_resultOptions$","SignalCardSpfDomainAnalyzer","ctaLink","adaptDomainAnalyzerSpfExtractor","setAreAllCollapsed","SignalCard","SignalCardSubdo","adaptSubdoExtractor","CARD_STATUS","GOOD","DANGER","SignalCardThreatInv","from","sanitizedFrom","_from$name","_from$email","name","email","adaptThreatIntelligenceExtractor","tl","SignalCardTls","divProps","adaptTlsExtractor","SignalCardUrls","_investigate$urls","adaptUrlsExtractor","DS_TEXT_SECONDARY","DS_TEXT_HEADING","DS_BORDER_LIGHT","DS_BG_HOVER","DS_BG_SELECTED","StyledContainer","StyledSidebar","aside","StyledMobileDropdownWrapper","StyledDropdownItemContent","StyledDropdownItemMeta","StyledDropdownItemTitle","StyledDropdownItemDescription","StyledSection","section","StyledSectionHeading","h3","StyledSignalList","StyledSignalListItem","$selected","StyledStatusIconWrapper","StyledSignalMeta","StyledSignalTitle","StyledSignalDescription","StyledDetailsPane","StyledCardContainer","StyledCardWrapper","DS_BG_CONTAINER","StyledOuterWrapper","StyledHeaderBar","StyledHeaderLeft","StyledEmailInfo","StyledEmailLabel","StyledEmailAddress","StyledEmailMeta","StyledEmailMetaItem","StyledEmailMetaLabel","StyledHeaderRight","StyledBrandingSection","StyledPoweredByText","StyledBrandingLogo","img","StyledCheckAnotherButton","StyledDivider","hr","NullComponent","DEFAULT_CARD_ENABLED","emailProvider","mtaSts","threatIntelligence","googleYahooCompliance","SIGNAL_TYPE_FLAG_MAP","SIGNAL_TYPES","SPF","BIMI_CHECKER_SIGNAL_TYPES","DOMAIN_ANALYZER_SIGNAL_TYPES","SUBDO","TLS","FCRDNS","DKIM","DMARC","URLS","THREATINV","BIMI","MTA_STS","DNSSEC","AMP","GOOGLE_YAHOO_COMPLIANCE","getCardFlagKey","isSignalTypeEnabled","isCardEnabledMap","flagKey","flag","SIGNAL_TITLE_MAP","getCardComponent","SignalCardBimi","SignalCardSpfDomain","SignalCardDmarcDomain","getSignalPosition","_SIGNAL_CARD_POSITION","SIGNAL_CARD_POSITIONS","MAX_SAFE_INTEGER","_STATUS_ICON_STYLES$s","config","STATUS_ICON_STYLES","hasRequiredData","signal","unsubscribe","getSignalTitle","_SIGNAL_TITLE_MAP$can","canonicalType","getCanonicalSignalType","getStatusLabel","translate","SignalListSection","memo","heading","activeSignalType","onSelect","onKeyDown","isSelected","tabIndex","event","SignalCardList","prioritySignalTypes","DEFAULT_PRIORITY_SIGNAL_TYPES","initialSelectedSignalType","onSelectSignalType","renderCardHeader","cardPromoHref","renderCardFooter","prioritySectionHeading","remainingSectionHeading","useInvestigateColorsOverride","recommendationsLoading","showRecommendations","recommendationsCTA","onCheckAnotherEmail","renderHeaderAction","useResolvedTheme","setActiveSignalType","mergedIsCardEnabledMap","sortedSignals","sort","a","b","summaries","getSignalStatus","statusLabel","CardComponent","canonicalPriority","prioritySignals","orderedSignals","seenSignalTypes","add","prioritySignalTypeSet","remainingSignals","allSignalsForDropdown","_allSignalsForDropdow","_allSignalsForDropdow2","_defaultSignal$signal","availableTypes","defaultSignal","nextType","noopHeightChange","handleSelect","handleKeyDown","preventDefault","currentIndex","findIndex","nextIndex","nextSignal","shouldShowRecommendations","checkedEmail","emailSubject","emailDate","_signal$jmap","_signal$jmap$from","_signal$jmap2","_signal$jmap3","subject","date","stack","showHeader","SignalCardThemeProvider","theme","Date","toLocaleString","year","month","day","hour","minute","mdiSync","ondmarcLogoSvg","wrapperProps","_ref5","_summary$title","find","_ref6","_ref7","_signal$jmap$extsecre","_signal$jmap4","_signal$jmap4$extsecr","_signal$jmap4$extsecr2","_signal$jmap5","_signal$jmap5$extsecr","_signal$jmap5$extsecr2","style","display","fromDomain","withSignalCardTheme","BaseSignalCardList","BaseSignalCardDmarc","BaseSignalCardSpf","BaseSignalCardDkim","BaseSignalCardFcrdns","BaseSignalCardTls","BaseSignalCardDmarcDomain","BaseSignalCardSpfDomain","BaseSignalCardSpfDomainAnalyzer","BaseSignalCardDkimDomainAnalyzer","BaseSignalCardBimi","BaseSignalCardMtaSts","BaseSignalCardSubdo","BaseSignalCardThreatInv","BaseSignalCardDnssec","BaseSignalCardAmp","BaseSignalCardUrls","BaseSignalCardGoogleYahooCompliance"],"mappings":"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;AAEM,MAAM+D,iBAAiB,GAAGhE,MAAM,CAACC,GAAI,CAAA;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAA,EAAuByD,iBAAkB,CAAA;AACzC;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMO,cAAc,GAAGjE,MAAM,CAACC,GAAI,CAAA;AACzC;AACA;AACA;AACA;AACA;AACA,qBAAA,EAAuByD,iBAAkB,CAAA;AACzC;AACA;AACA,CAAC,CAAA;AAEM,MAAMQ,aAAa,GAAGlE,MAAM,CAACC,GAAI,CAAA;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMkE,OAAO,GAAGnE,MAAM,CAACoE,IAAK,CAAA;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMC,UAAU,GAAGrE,MAAM,CAACsE,EAAG,CAAA;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAA,EAAuBZ,iBAAkB,CAAA;AACzC;AACA;AACA,CAAC,CAAA;AAEM,MAAMa,UAAU,GAAGvE,MAAM,CAACwE,EAAG,CAAA;AACpC;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMC,MAAM,GAAGzE,MAAM,CAACoE,IAAK,CAAA;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMM,UAAU,GAAG1E,MAAM,CAACoE,IAAK,CAAA;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAA,EAAuBV,iBAAkB,CAAA;AACzC;AACA;AACA,CAAC,CAAA;AAEM,MAAMiB,OAAO,GAAG3E,MAAM,CAACC,GAAI,CAAA;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAA,EAAuByD,iBAAkB,CAAA;AACzC;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMkB,cAAc,GAAG5E,MAAM,CAACC,GAAI,CAAA;AACzC;AACA;AACA;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"}
1
+ {"version":3,"file":"signal-cards.js","sources":["../../src/components/signal-cards/components/ErrorBoundary/SignalCardErrorBoundary.tsx","../../src/components/signal-cards/cards/SignalCardList/RecommendationsSummary.types.ts","../../src/components/signal-cards/cards/SignalCardList/RecommendationsSummary.styles.tsx","../../src/components/signal-cards/cards/SignalCardList/RecommendationsSummary.tsx","../../src/components/signal-cards/cards/SignalCardAmp/SignalCardAmp.tsx","../../src/components/signal-cards/cards/SignalCardDkim/SignalCardDkim.tsx","../../src/components/signal-cards/constants/constants.ts","../../src/components/signal-cards/cards/SignalCardDkimDomainAnalyzer/styles.ts","../../src/components/signal-cards/cards/SignalCardDkimDomainAnalyzer/SignalCardDkimDomainAnalyzer.tsx","../../src/components/signal-cards/cards/SignalCardDmarc/DmarcSummaryBoxes.tsx","../../src/components/signal-cards/cards/SignalCardDmarc/SignalCardDmarc.tsx","../../src/components/signal-cards/cards/SignalCardDnssec/SignalCardDnssec.tsx","../../src/components/signal-cards/cards/SignalCardFcrdns/SignalCardFcrdns.tsx","../../src/components/signal-cards/cards/SignalCardGoogleYahooCompliance/styles.ts","../../src/components/signal-cards/cards/SignalCardGoogleYahooCompliance/SignalCardGoogleYahooCompliance.tsx","../../src/components/signal-cards/cards/SignalCardMtaSts/SignalCardMtaSts.tsx","../../src/components/signal-cards/cards/SignalCardSpf/SignalCardSpf.tsx","../../src/components/signal-cards/cards/SignalCardSpfDomainAnalyzer/SignalCardSpfDomainAnalyzer.tsx","../../src/components/signal-cards/cards/SignalCardSubdo/SignalCardSubdo.tsx","../../src/components/signal-cards/cards/SignalCardThreatInv/SignalCardThreatInv.tsx","../../src/components/signal-cards/cards/SignalCardTls/SignalCardTls.tsx","../../src/components/signal-cards/cards/SignalCardUrls/SignalCardUrls.tsx","../../src/components/signal-cards/cards/SignalCardList/styles.tsx","../../src/components/signal-cards/cards/SignalCardList/helpers.tsx","../../src/components/signal-cards/cards/SignalCardList/SignalCardList.tsx","../../src/components/signal-cards/index.ts"],"sourcesContent":["import React, { Component, type ReactNode, type ErrorInfo } from 'react';\nimport styled from 'styled-components';\nimport { signalCardsLogger } from '../../utils/logger';\n\n/**\n * Props for the SignalCardErrorBoundary component\n */\nexport interface SignalCardErrorBoundaryProps {\n /** Children components to wrap */\n children: ReactNode;\n /** Optional signal type for error context */\n signalType?: string;\n /** Optional custom fallback component */\n fallback?: ReactNode;\n /** Optional callback when error is caught */\n onError?: (error: Error, errorInfo: ErrorInfo) => void;\n /**\n * Optional key to reset the error boundary.\n * When this key changes, the error boundary resets and attempts to re-render children.\n * Useful for retry mechanisms or when underlying data changes.\n */\n resetKey?: string | number;\n}\n\ninterface SignalCardErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nconst ErrorContainer = styled.div`\n padding: 1rem;\n border: 1px solid var(--redsift-color-status-danger-lighter, #fecaca);\n border-radius: 8px;\n background-color: var(--redsift-color-status-danger-lightest, #fef2f2);\n color: var(--redsift-color-status-danger-darker, #991b1b);\n`;\n\nconst ErrorTitle = styled.h4`\n margin: 0 0 0.5rem 0;\n font-size: 14px;\n font-weight: 600;\n`;\n\nconst ErrorMessage = styled.p`\n margin: 0;\n font-size: 12px;\n opacity: 0.8;\n`;\n\n/**\n * Error boundary component for Signal Cards.\n *\n * Catches errors in signal card rendering and displays a user-friendly fallback\n * instead of crashing the entire UI. Logs errors to help with debugging.\n *\n * @example\n * ```tsx\n * <SignalCardErrorBoundary signalType=\"dmarc\">\n * <SignalCardDmarc data={data} />\n * </SignalCardErrorBoundary>\n * ```\n *\n * @example Reset on data change\n * ```tsx\n * <SignalCardErrorBoundary signalType=\"dmarc\" resetKey={data.id}>\n * <SignalCardDmarc data={data} />\n * </SignalCardErrorBoundary>\n * ```\n */\nexport class SignalCardErrorBoundary extends Component<SignalCardErrorBoundaryProps, SignalCardErrorBoundaryState> {\n constructor(props: SignalCardErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): SignalCardErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidUpdate(prevProps: SignalCardErrorBoundaryProps): void {\n // Reset error state when resetKey changes\n if (this.state.hasError && prevProps.resetKey !== this.props.resetKey) {\n this.setState({ hasError: false, error: null });\n }\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n const { signalType, onError } = this.props;\n\n signalCardsLogger.error(\n `SignalCard rendering error${signalType ? ` for ${signalType}` : ''}:`,\n error,\n errorInfo.componentStack\n );\n\n onError?.(error, errorInfo);\n }\n\n render(): ReactNode {\n const { hasError, error } = this.state;\n const { children, fallback, signalType } = this.props;\n\n if (hasError) {\n if (fallback) {\n return fallback;\n }\n\n return (\n <ErrorContainer role=\"alert\">\n <ErrorTitle>Unable to display {signalType ? `${signalType.toUpperCase()} ` : ''}signal card</ErrorTitle>\n <ErrorMessage>{error?.message || 'An unexpected error occurred while rendering this card.'}</ErrorMessage>\n </ErrorContainer>\n );\n }\n\n return children;\n }\n}\n\nexport default SignalCardErrorBoundary;\n","/**\n * Types and constants for the RecommendationsSummary component.\n */\n\nimport type { RecommendationsData } from '../../types/recommendations';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/** Structured data for the CTA card */\nexport interface CTAData {\n /** CTA heading (e.g. \"Get full protection with OnDMARC\") */\n title: string;\n /** CTA body text */\n description: string;\n /** Button label */\n buttonLabel: string;\n /** Callback when the button is clicked */\n onClickCTA: () => void;\n}\n\nexport interface RecommendationsSummaryProps {\n /** AI recommendations data */\n recommendations?: RecommendationsData | null;\n /** Whether recommendations are loading */\n loading?: boolean;\n /** Structured CTA data for the call-to-action card */\n cta?: CTAData;\n /** Callback when user clicks \"See more details\" on a status card */\n onExpandSignalCard?: (signalType: string) => void;\n}\n\n/**\n * Status values matching signal-logic's CardStatus union.\n * Includes 'info' and 'unknown' in addition to the primary three.\n */\nexport type StatusType = 'good' | 'warning' | 'danger' | 'error' | 'not_configured' | 'info' | 'unknown';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/** The core three status card protocols, always shown in display order */\nexport const CORE_PROTOCOLS = ['dmarc', 'dkim', 'spf'] as const;\n\n/** Additional protocols rendered dynamically when present in signals */\nexport const OPTIONAL_PROTOCOLS = [\n 'tls',\n 'fcrdns',\n 'mta_sts',\n 'bimi',\n 'dnssec',\n 'urls',\n 'threat_intelligence',\n 'amp',\n 'subdo',\n 'google_yahoo_compliance',\n] as const;\n\n/** Translation keys for protocol labels (lookup by protocol name) */\nexport const PROTOCOL_LABEL_KEYS: Record<string, string> = {\n dmarc: 'recommendations.protocol-dmarc',\n spf: 'recommendations.protocol-spf',\n dkim: 'recommendations.protocol-dkim',\n tls: 'recommendations.protocol-tls',\n fcrdns: 'recommendations.protocol-fcrdns',\n mta_sts: 'recommendations.protocol-mta-sts',\n bimi: 'recommendations.protocol-bimi',\n dnssec: 'recommendations.protocol-dnssec',\n urls: 'recommendations.protocol-urls',\n threat_intelligence: 'recommendations.protocol-threat-intelligence',\n amp: 'recommendations.protocol-amp',\n subdo: 'recommendations.protocol-subdo',\n google_yahoo_compliance: 'recommendations.protocol-google-yahoo-compliance',\n};\n\n/** Analysis keys rendered as bullet points, in order */\nexport const ANALYSIS_KEYS = ['posture', 'impact', 'recommended_action'] as const;\n\n/** Colors for status types */\nexport const STATUS_COLORS: Record<StatusType, string> = {\n danger: '#d90f47',\n warning: '#f7c948',\n good: '#26a69b',\n error: '#d90f47',\n not_configured: '#8e8e9a',\n info: '#2f6ed6',\n unknown: 'rgba(27, 29, 31, 0.45)',\n};\n","/**\n * Styled components and visual helpers for RecommendationsSummary.\n */\n\nimport React from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport type { StatusType } from './RecommendationsSummary.types';\nimport { STATUS_COLORS } from './RecommendationsSummary.types';\n\n// ============================================================================\n// Animations\n// ============================================================================\n\nconst shimmer = keyframes`\n 0% { background-position: -200px 0; }\n 100% { background-position: calc(200px + 100%) 0; }\n`;\n\nconst spin = keyframes`\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n`;\n\n// ============================================================================\n// Layout\n// ============================================================================\n\nconst BREAKPOINT_MOBILE = '937px';\nconst BREAKPOINT_STACK = '980px';\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 35px;\n width: 100%;\n box-sizing: border-box;\n padding: 0 48px 48px;\n\n @media (max-width: ${BREAKPOINT_STACK}) {\n padding: 0 24px 24px;\n }\n`;\n\nexport const ContentLayout = styled.div`\n display: flex;\n gap: 48px;\n width: 100%;\n align-items: center;\n\n @media (max-width: ${BREAKPOINT_STACK}) {\n flex-direction: column;\n gap: 24px;\n }\n`;\n\n// ============================================================================\n// Analysis Column (left)\n// ============================================================================\n\nexport const AnalysisColumn = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n\n @media (max-width: ${BREAKPOINT_STACK}) {\n width: 100%;\n }\n`;\n\nexport const AnalysisCard = styled.div`\n border: 1px solid rgba(155, 146, 244, 0.58);\n border-radius: 8px;\n height: 100%;\n position: relative;\n`;\n\nexport const AnalysisCardInner = styled.div`\n background: rgba(255, 255, 255, 0.87);\n backdrop-filter: blur(7.5px);\n border-radius: 8px;\n padding: 16px 0;\n display: flex;\n flex-direction: column;\n gap: 16px;\n height: 100%;\n justify-content: center;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n padding: 16px 0;\n gap: 12px;\n }\n`;\n\nexport const AnalysisHeader = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 24px 0 26px;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n padding: 0 12px;\n }\n`;\n\nexport const AnalysisTitle = styled.div`\n font-family: var(--sc-font-heading, 'Space Grotesk', sans-serif);\n font-size: 18px;\n font-weight: 700;\n line-height: 1.5;\n letter-spacing: 1px;\n color: var(--redsift-color-red-700, #d90f47);\n text-transform: uppercase;\n`;\n\nexport const AIBadge = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n\n & img {\n display: block;\n width: 30px;\n height: 31px;\n }\n`;\n\nexport const BulletList = styled.ul`\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 0 24px 0 26px;\n margin: 0;\n list-style: none;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n padding: 0 12px 0 12px;\n }\n`;\n\nexport const BulletItem = styled.li`\n display: flex;\n align-items: flex-start;\n gap: 18px;\n`;\n\nexport const Bullet = styled.span`\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--redsift-color-red-700, #d90f47);\n flex-shrink: 0;\n margin-top: 8px;\n`;\n\nexport const BulletText = styled.span`\n font-family: var(--sc-font-body, 'Open Sans', sans-serif);\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: var(--sc-text-color, #333333);\n flex: 1;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n font-size: 14px;\n }\n`;\n\nexport const CTASlot = styled.div`\n margin: 8px 24px 0 26px;\n background: linear-gradient(\n 81.97deg,\n rgba(237, 21, 83, 0.07) 2.5%,\n rgba(140, 101, 255, 0.07) 51%,\n rgba(107, 183, 255, 0.07) 100%\n ),\n linear-gradient(90deg, #fff 0%, #fff 100%);\n background-image: linear-gradient(to top, #f2f7ff, #f7f1ff 52.4%, #f7ecf3);\n border: 1px solid #cce7fd;\n border-radius: 8px;\n box-shadow: 2px 3px 4px 0px rgba(217, 227, 255, 0.47), -3px 3px 14.4px 0px rgba(218, 236, 253, 0.84);\n padding: 16px 26px 24px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n overflow: clip;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n padding: 12px 16px;\n margin: 8px 12px 0;\n }\n`;\n\nexport const CTATextContent = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n\nexport const CTATitle = styled.span`\n font-family: var(--sc-font-heading, 'Space Grotesk', sans-serif);\n font-size: 20px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--sc-text-darkest, #2a2949);\n`;\n\nexport const CTADescription = styled.span`\n font-family: var(--sc-font-body, 'Open Sans', sans-serif);\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: var(--sc-text-color, #2a2949);\n`;\n\nexport const CTAButtonWrapper = styled.div`\n flex-shrink: 0;\n`;\n\nexport const CTAButton = styled.button`\n background: var(\n --redsift-color-light-components-website-buttons-primary-website-button-primary-background-default,\n #63224a\n );\n color: white;\n border: none;\n border-radius: 5px;\n padding: 13px 20px;\n font-family: var(--sc-font-heading, 'Space Grotesk', sans-serif);\n font-size: 18px;\n font-weight: 500;\n line-height: 1.5;\n letter-spacing: 0.18px;\n cursor: pointer;\n white-space: nowrap;\n transition: background-color 200ms ease-out;\n\n &:hover {\n background: var(\n --redsift-color-light-components-website-buttons-primary-website-button-primary-background-hover,\n #52184d\n );\n }\n`;\n\n// ============================================================================\n// Status Column (right)\n// ============================================================================\n\nexport const StatusColumn = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n justify-content: center;\n\n @media (max-width: ${BREAKPOINT_STACK}) {\n width: 100%;\n }\n`;\n\nexport const StatusCard = styled.div<{ $status: StatusType }>`\n background: white;\n border-left: 5px solid ${({ $status }) => STATUS_COLORS[$status] || STATUS_COLORS.danger};\n border-radius: 5px;\n padding: 16px 24px;\n display: flex;\n align-items: center;\n gap: 26px;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n`;\n\nexport const StatusHeader = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100px;\n flex-shrink: 0;\n`;\n\nexport const StatusIconWrapper = styled.div<{ $status: StatusType }>`\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: ${({ $status }) => STATUS_COLORS[$status] || STATUS_COLORS.danger};\n`;\n\nexport const StatusLabel = styled.div`\n font-family: var(--sc-font-heading, 'Space Grotesk', sans-serif);\n font-size: 20px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--sc-text-color, #333333);\n white-space: nowrap;\n`;\n\nexport const StatusContent = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n`;\n\nexport const StatusMessage = styled.div`\n font-family: var(--sc-font-body, 'Open Sans', sans-serif);\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: var(--sc-text-muted, #525252);\n`;\n\nexport const DetailsLink = styled.button`\n background: none;\n border: none;\n padding: 0;\n font-family: var(--sc-font-body, 'Open Sans', sans-serif);\n font-size: 16px;\n font-weight: 400;\n color: var(--sc-link-color, #4285f4);\n cursor: pointer;\n margin-top: 8px;\n text-align: left;\n width: fit-content;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n\n// ============================================================================\n// Loading Skeleton\n// ============================================================================\n\nexport const SkeletonContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 0 0 0 21px;\n width: 100%;\n\n @media (max-width: ${BREAKPOINT_MOBILE}) {\n padding: 0 0 0 8px;\n }\n`;\n\nexport const SkeletonLoadingHeader = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 0 8px 0;\n`;\n\nexport const SkeletonSpinner = styled.div`\n width: 16px;\n height: 16px;\n border: 2px solid #e8e8ec;\n border-top: 2px solid #d90f47;\n border-radius: 50%;\n animation: ${spin} 1s linear infinite;\n`;\n\nexport const SkeletonLoadingText = styled.span`\n font-family: var(--sc-font-body, 'Open Sans', sans-serif);\n font-size: 12px;\n color: var(--redsift-color-neutral-dark-grey, #69697e);\n font-style: italic;\n`;\n\nexport const SkeletonRow = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 18px;\n`;\n\nexport const SkeletonBullet = styled.div`\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: linear-gradient(90deg, #e8e8ec 0%, #f4f4f6 50%, #e8e8ec 100%);\n background-size: 200px 100%;\n animation: ${shimmer} 1.5s ease-in-out infinite;\n flex-shrink: 0;\n margin-top: 6px;\n`;\n\nexport const SkeletonLine = styled.div<{ $width?: string }>`\n height: 16px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e8e8ec 0%, #f4f4f6 50%, #e8e8ec 100%);\n background-size: 200px 100%;\n animation: ${shimmer} 1.5s ease-in-out infinite;\n width: ${({ $width }) => $width || '100%'};\n`;\n\nexport const SkeletonStatusCard = styled.div`\n background: white;\n border-left: 5px solid #e8e8ec;\n border-radius: 5px;\n padding: 16px 24px;\n display: flex;\n align-items: center;\n gap: 26px;\n`;\n\nexport const SkeletonStatusLabel = styled.div`\n width: 60px;\n height: 24px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e8e8ec 0%, #f4f4f6 50%, #e8e8ec 100%);\n background-size: 200px 100%;\n animation: ${shimmer} 1.5s ease-in-out infinite;\n`;\n\nexport const SkeletonStatusMessage = styled.div`\n flex: 1;\n height: 16px;\n border-radius: 4px;\n background: linear-gradient(90deg, #e8e8ec 0%, #f4f4f6 50%, #e8e8ec 100%);\n background-size: 200px 100%;\n animation: ${shimmer} 1.5s ease-in-out infinite;\n`;\n\n// ============================================================================\n// Status Icons (inline SVGs)\n// ============================================================================\n\nconst DangerIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path d=\"M10 6V10\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <path d=\"M10 14H10.01\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport const WarningIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 2L2.5 17H17.5L10 2Z\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinejoin=\"round\" />\n <path d=\"M10 8V12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <path d=\"M10 14.5V14.51\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst GoodIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 10C18 14.4183 14.4183 18 10 18C5.58172 18 2 14.4183 2 10C2 5.58172 5.58172 2 10 2C14.4183 2 18 5.58172 18 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path d=\"M7 10L9 12L13 8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst InfoIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path d=\"M10 14V10\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <path d=\"M10 6H10.01\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst UnknownIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M7.5 7.5C7.5 6.12 8.62 5 10 5C11.38 5 12.5 6.12 12.5 7.5C12.5 8.88 11.38 10 10 10V11\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M10 14H10.01\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst ErrorIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path d=\"M13 7L7 13\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <path d=\"M7 7L13 13\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst NotConfiguredIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18C14.4183 18 18 14.4183 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 14.4183 5.58172 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeDasharray=\"4 3\"\n />\n <path d=\"M7 10H13\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\n/**\n * Returns the appropriate status icon for a given StatusType.\n * Handles all five canonical statuses (good, warning, danger, info, unknown).\n */\nexport const getStatusIcon = (status: StatusType): React.ReactNode => {\n switch (status) {\n case 'good':\n return <GoodIcon />;\n case 'warning':\n return <WarningIcon />;\n case 'danger':\n return <DangerIcon />;\n case 'error':\n return <ErrorIcon />;\n case 'not_configured':\n return <NotConfiguredIcon />;\n case 'info':\n return <InfoIcon />;\n case 'unknown':\n return <UnknownIcon />;\n default:\n return <DangerIcon />;\n }\n};\n","/**\n * RecommendationsSummary Component\n *\n * Renders AI-powered recommendations inside SignalCardList:\n * - Analysis bullets (posture, impact, recommended_action)\n * - Status cards for core protocols (DMARC, DKIM, SPF) plus any optional protocols present\n * - CTA card with title, description, and button\n * - Loading skeleton when recommendationsLoading is true\n */\n\nimport React from 'react';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport aiBadgeSvg from '../../assets/ai-badge.svg';\n\nimport type { RecommendationsSummaryProps, StatusType } from './RecommendationsSummary.types';\nimport { CORE_PROTOCOLS, PROTOCOL_LABEL_KEYS, ANALYSIS_KEYS } from './RecommendationsSummary.types';\nimport {\n Container,\n ContentLayout,\n AnalysisColumn,\n AnalysisCard,\n AnalysisCardInner,\n AnalysisHeader,\n AnalysisTitle,\n AIBadge,\n BulletList,\n BulletItem,\n Bullet,\n BulletText,\n CTASlot,\n CTATextContent,\n CTATitle,\n CTADescription,\n CTAButtonWrapper,\n CTAButton,\n StatusColumn,\n StatusCard,\n StatusHeader,\n StatusIconWrapper,\n StatusLabel,\n StatusContent,\n StatusMessage,\n DetailsLink,\n SkeletonContainer,\n SkeletonLoadingHeader,\n SkeletonSpinner,\n SkeletonLoadingText,\n SkeletonRow,\n SkeletonBullet,\n SkeletonLine,\n SkeletonStatusCard,\n SkeletonStatusLabel,\n SkeletonStatusMessage,\n WarningIcon,\n getStatusIcon,\n} from './RecommendationsSummary.styles';\n\nexport type { RecommendationsSummaryProps, StatusType };\n\n// ============================================================================\n// Loading Skeleton Sub-component\n// ============================================================================\n\nconst LoadingSkeleton: React.FC = () => {\n const { t } = useSignalCardTranslation('investigate');\n\n return (\n <Container data-testid=\"recommendations-summary-loading\">\n <ContentLayout>\n <AnalysisColumn>\n <AnalysisCard>\n <AnalysisCardInner>\n <AnalysisHeader>\n <AnalysisTitle>{t('recommendations.title')}</AnalysisTitle>\n <AIBadge>\n <img src={aiBadgeSvg} alt={t('recommendations.ai-badge')} />\n </AIBadge>\n </AnalysisHeader>\n <SkeletonContainer>\n <SkeletonLoadingHeader>\n <SkeletonSpinner />\n <SkeletonLoadingText>{t('recommendations.loading-text')}</SkeletonLoadingText>\n </SkeletonLoadingHeader>\n {[90, 80, 70].map((w) => (\n <SkeletonRow key={w}>\n <SkeletonBullet />\n <SkeletonLine $width={`${w}%`} />\n </SkeletonRow>\n ))}\n </SkeletonContainer>\n </AnalysisCardInner>\n </AnalysisCard>\n </AnalysisColumn>\n <StatusColumn>\n {CORE_PROTOCOLS.map((protocol) => (\n <SkeletonStatusCard key={protocol}>\n <SkeletonStatusLabel />\n <SkeletonStatusMessage />\n </SkeletonStatusCard>\n ))}\n </StatusColumn>\n </ContentLayout>\n </Container>\n );\n};\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\nexport const RecommendationsSummary: React.FC<RecommendationsSummaryProps> = ({\n recommendations,\n loading = false,\n cta,\n onExpandSignalCard,\n}) => {\n const { t } = useSignalCardTranslation('investigate');\n\n // Loading state\n if (loading) {\n return <LoadingSkeleton />;\n }\n\n // No data, don't render\n if (!recommendations) {\n return null;\n }\n\n const { analysis, signals } = recommendations;\n\n // Collect non-empty analysis bullet points\n const analysisItems = ANALYSIS_KEYS.map((key) => ({\n key,\n text: analysis?.[key],\n })).filter(({ text }) => !!text);\n\n return (\n <Container data-testid=\"recommendations-summary\">\n <ContentLayout>\n {/* Left: AI Analysis + CTA */}\n <AnalysisColumn>\n <AnalysisCard>\n <AnalysisCardInner>\n <AnalysisHeader>\n <AnalysisTitle>{t('recommendations.title')}</AnalysisTitle>\n <AIBadge>\n <img src={aiBadgeSvg} alt={t('recommendations.ai-badge')} />\n </AIBadge>\n </AnalysisHeader>\n {analysisItems.length > 0 && (\n <BulletList>\n {analysisItems.map(({ key, text }) => (\n <BulletItem key={key}>\n <Bullet />\n <BulletText>{text}</BulletText>\n </BulletItem>\n ))}\n </BulletList>\n )}\n {cta && (\n <CTASlot>\n <CTATextContent>\n <CTATitle>{cta.title}</CTATitle>\n <CTADescription>{cta.description}</CTADescription>\n </CTATextContent>\n <CTAButtonWrapper>\n <CTAButton type=\"button\" onClick={cta.onClickCTA}>\n {cta.buttonLabel}\n </CTAButton>\n </CTAButtonWrapper>\n </CTASlot>\n )}\n </AnalysisCardInner>\n </AnalysisCard>\n </AnalysisColumn>\n\n {/* Right: Status Cards */}\n <StatusColumn>\n {CORE_PROTOCOLS.map((protocol) => {\n const signalData = signals?.[protocol];\n const protocolLabel = t(PROTOCOL_LABEL_KEYS[protocol]);\n\n if (!signalData) {\n return (\n <StatusCard key={protocol} $status=\"warning\">\n <StatusHeader>\n <StatusIconWrapper $status=\"warning\">\n <WarningIcon />\n </StatusIconWrapper>\n <StatusLabel>{protocolLabel}</StatusLabel>\n </StatusHeader>\n <StatusContent>\n <StatusMessage>{t('recommendations.no-data')}</StatusMessage>\n </StatusContent>\n </StatusCard>\n );\n }\n\n const status = signalData.status as StatusType;\n\n return (\n <StatusCard key={protocol} $status={status}>\n <StatusHeader>\n <StatusIconWrapper $status={status}>{getStatusIcon(status)}</StatusIconWrapper>\n <StatusLabel>{protocolLabel}</StatusLabel>\n </StatusHeader>\n <StatusContent>\n <StatusMessage>{signalData.summary}</StatusMessage>\n {onExpandSignalCard && (\n <DetailsLink onClick={() => onExpandSignalCard(protocol.toUpperCase())} type=\"button\">\n {t('recommendations.see-more-details')}\n </DetailsLink>\n )}\n </StatusContent>\n </StatusCard>\n );\n })}\n </StatusColumn>\n </ContentLayout>\n </Container>\n );\n};\n","import React, { forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\nimport type { CardStatus } from '@redsift/signal-logic';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { useCollapseController } from '../../hooks/useCollapseController';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { adaptAmpExtractor } from '../../adapters/extractor-adapter';\n\n// Re-export signal-logic functions for backward compatibility\nexport { getDkimAndSpfChecks } from '@redsift/signal-logic';\n\nimport type { SignalCardAmpProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardAmp';\nconst CLASSNAME = 'redsift-signal-card-amp';\n\n/**\n * SignalCardAmp Component\n *\n * Displays AMP (Authenticated Mail Protocol) compliance information including\n * SPF and DKIM authentication checks, and DKIM alignment status.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardAmp\n * jmap={jmapData}\n * onHeightChange={() => console.log('height changed')}\n * bannerVariant=\"standard\"\n * />\n * ```\n */\nexport const SignalCardAmp: Comp<SignalCardAmpProps, HTMLDivElement> = forwardRef<HTMLDivElement, SignalCardAmpProps>(\n function SignalCardAmp(props, ref) {\n const {\n className,\n onHeightChange,\n jmap,\n bannerVariant,\n renderFooter,\n useInvestigateColors = false,\n isCollapsible,\n areAllCollapsed,\n onCollapseAll,\n ...forwardedProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n const { spf, dmarc, dkim } = jmap.extsecrep;\n\n const {\n areAllCollapsed: resolvedAreAllCollapsed,\n handleCollapseAll,\n isCollapsible: resolvedIsCollapsible,\n } = useCollapseController({\n isCollapsible,\n areAllCollapsed,\n onCollapseAll,\n });\n\n const extData = useMemo(() => {\n if (!dmarc) return null;\n return adaptAmpExtractor({\n spf,\n dmarc,\n dkim: dkim as Record<string, unknown> | null | undefined,\n jmap,\n t,\n });\n }, [spf, dmarc, dkim, jmap, t]);\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = useMemo(() => {\n if (!dmarc || !extData) return [];\n const { infoItemsCategories, extractedItemsCategories } = extData;\n return [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extracted-items-${i}`,\n title: cat.title,\n testId: `amp-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `info-items-${i}`,\n title: cat.title,\n testId: `amp-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ];\n }, [dmarc, extData, useInvestigateColors, t]);\n\n if (!dmarc || !extData) {\n return null;\n }\n\n const { cardType } = extData as { cardType: CardStatus };\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n onHeightChange={onHeightChange}\n title=\"AMP\"\n type=\"AMP\"\n cardType={cardType}\n bannerVariant={bannerVariant}\n sections={sections}\n shortDescription={t('card.amp.desc-short')}\n longDescription={t('card.amp.desc-long')}\n renderFooter={renderFooter}\n isCollapsible={resolvedIsCollapsible}\n areAllCollapsed={resolvedAreAllCollapsed}\n onCollapseAll={handleCollapseAll}\n data-testid=\"signal-card-amp\"\n data-card-type={cardType}\n />\n );\n }\n);\n\nSignalCardAmp.displayName = COMPONENT_NAME;\nSignalCardAmp.className = CLASSNAME;\n","import React, { useState, useEffect, forwardRef, useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist, { ChecklistItem } from '../../components/ui/Checklist/Checklist';\nimport { adaptDkimExtractor } from '../../adapters/extractor-adapter';\nimport type { CardStatus } from '@redsift/signal-logic';\nimport type {\n InfoItem,\n ExtractedItemCategory,\n ExtractDataResult,\n DkimResult,\n ParsedDkimResult,\n SignalCardDkimProps,\n SignalCardDkimState,\n} from './types';\n\nconst COMPONENT_NAME = 'SignalCardDkim';\nconst CLASSNAME = 'redsift-signal-card-dkim';\n\nexport const SignalCardDkim: Comp<SignalCardDkimProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardDkimProps\n>(function SignalCardDkim(props, ref) {\n const { t } = useSignalCardTranslation('investigate');\n const {\n jmap,\n onHeightChange,\n useInvestigateColors,\n isCollapsible,\n areAllCollapsed: areAllCollapsedProp,\n onCollapseAll: onCollapseAllProp,\n className,\n ...rest\n } = props;\n\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const areAllCollapsed = areAllCollapsedProp !== undefined ? areAllCollapsedProp : internalCollapsed;\n const onCollapseAll = useCallback(\n (collapsed: boolean) => {\n setInternalCollapsed(collapsed);\n onCollapseAllProp?.(collapsed);\n },\n [onCollapseAllProp]\n );\n\n // Compute initial state synchronously to avoid flash of wrong cardType\n const computeInitialState = useMemo((): SignalCardDkimState => {\n const { dmarc = null, dkim = null } = jmap.extsecrep;\n\n const parsedResults: ParsedDkimResult[] = [];\n let initialIndex = 0;\n\n const addResult = (entry: DkimResult | null, idx: number) => {\n const parsed = adaptDkimExtractor(entry, t) as ExtractDataResult;\n const signerDomain = entry?.signature?.signerDomain ?? null;\n parsedResults.push({ ...parsed, signerDomain });\n\n if (dmarc?.dkimDomain && signerDomain === dmarc.dkimDomain) {\n initialIndex = idx;\n }\n };\n\n if (Array.isArray(dkim)) {\n dkim.forEach((entry, idx) => addResult(entry, idx));\n } else {\n addResult(dkim, 0);\n }\n\n const resultOptions = parsedResults.map((result, idx) => ({\n id: idx,\n label: result.signerDomain || 'Unknown',\n type: result.cardType,\n }));\n\n const initialResult = parsedResults[initialIndex] ?? parsedResults[0] ?? null;\n\n return {\n dkimResults: parsedResults,\n resultOptions,\n resultSelected: initialIndex,\n cardType: initialResult?.cardType ?? null,\n infoItems: initialResult?.infoItems ?? null,\n infoItemsCategoriesDkim: initialResult?.infoItemsCategoriesDkim ?? null,\n extractedItemsCategories: initialResult?.extractedItemsCategories ?? null,\n };\n }, [jmap, t]);\n\n const [state, setState] = useState<SignalCardDkimState>(computeInitialState);\n\n // Update state when jmap or t changes\n useEffect(() => {\n setState(computeInitialState);\n }, [computeInitialState]);\n\n const onResultsChange = (key: number) => {\n const { dkimResults } = state;\n const selected = dkimResults[key];\n\n if (!selected) {\n return;\n }\n\n setState((prev) => ({\n ...prev,\n resultSelected: key,\n cardType: selected.cardType as CardStatus | null,\n infoItems: selected.infoItems as InfoItem[] | null,\n infoItemsCategoriesDkim: selected.infoItemsCategoriesDkim as ExtractedItemCategory[] | null,\n extractedItemsCategories: selected.extractedItemsCategories as ExtractedItemCategory[] | null,\n }));\n\n setTimeout(() => {\n onHeightChange?.();\n }, 100);\n };\n\n const {\n resultSelected,\n resultOptions,\n cardType,\n // errorItems, // No longer passed to SignalCardNormal - prop removed\n extractedItemsCategories,\n infoItemsCategoriesDkim,\n } = state;\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extractedItems-${i}`,\n title: cat.title,\n testId: `dkim-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItemsCategoriesDkim?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `dkim-checklist-${i}`,\n content: <Checklist items={cat.items as ChecklistItem[]} />,\n })) || []),\n ];\n\n const sectionIds = sections.map((s) => s.id);\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n ref={ref as any}\n className={classNames(CLASSNAME, className)}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n resultOptions={resultOptions}\n optionsLabel={t('investigate:multiple-results-label-dkim')}\n resultSelected={resultSelected}\n onResultsChange={onResultsChange}\n title={'DKIM'}\n type=\"DKIM\"\n {...rest}\n cardType={cardType ?? 'unknown'}\n sections={sections}\n customSectionOrder={['resultOptions', 'introDescription', ...sectionIds]}\n data-testid=\"signal-card-dkim\"\n data-card-type={cardType ?? 'unknown'}\n />\n );\n});\n\nSignalCardDkim.className = CLASSNAME;\nSignalCardDkim.displayName = COMPONENT_NAME;\n","export const STATUS = Object.freeze({\n PASS: 'pass',\n WARNING: 'warning',\n FAIL: 'fail',\n ERROR: 'error',\n INFO: 'info',\n} as const);\n\nexport type StatusValue = typeof STATUS[keyof typeof STATUS];\n","import styled from 'styled-components';\n\nexport const SelectorSection = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n margin-bottom: 1.5rem;\n`;\n\nexport const NoSelectorsContainer = styled.div`\n p {\n font-size: 14px;\n line-height: 1.5;\n margin-bottom: 1rem;\n }\n`;\n","import React, { forwardRef, useMemo, useState, useCallback, useEffect, type ReactNode } from 'react';\nimport classNames from 'classnames';\nimport { useMultiNamespaceTranslation } from '../../hooks/useSignalCardTranslation';\nimport { mdiCheck, mdiClose, mdiAlert, mdiEmail, mdiArrowDownBold } from '@redsift/icons';\nimport { Flexbox, Icon, TextField } from '@redsift/design-system';\nimport type { Comp } from '@redsift/design-system';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { Select, Item } from '@redsift/pickers';\nimport { TooltipInPortalWrapper } from '../../components/ui/TooltipInPortal/TooltipInPortal';\nimport { STATUS } from '../../constants/constants';\nimport { DKIM_KEY } from '@redsift/signal-logic';\nimport { COLOR } from '../signal-card-styles';\nimport { parseGlossaryMarkdown } from '../../utils/parse-glossary-markdown';\nimport { adaptDomainAnalyzerDkimExtractor } from '../../adapters/extractor-adapter';\nimport type { CardStatus } from '@redsift/signal-logic';\nimport type {\n SignalCardDkimDomainAnalyzerProps,\n SelectorDropdownProps,\n DkimRecord,\n TranslationFn,\n} from './types';\nimport type { StatusValue } from '../../constants/constants';\nimport { SelectorSection, NoSelectorsContainer } from './styles';\n\nconst COMPONENT_NAME = 'SignalCardDkimDomainAnalyzer';\nconst CLASSNAME = 'redsift-signal-card-dkim-domain-analyzer';\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nexport const getCardType = (record?: DkimRecord | null): CardStatus => {\n // Check issues array first (matches legacy behavior)\n const statuses = record?.issues?.map((issue) => issue.status).filter(Boolean) as string[] | undefined;\n\n // Legacy: if (!statuses) return INFO - only when issues is null/undefined\n if (!statuses) {\n return 'unknown';\n }\n\n // With issues array (even empty), check for fail/warning\n // Note: legacy used record.key.k but API type uses record.records.k\n const keyType = record?.key?.k || record?.records?.k;\n const hasFail = statuses.includes('fail');\n const hasWarning =\n statuses.includes('warning') || (keyType === 'rsa' && (record?.keyStatus?.keySize ?? 0) < DKIM_KEY.VALID_LENGTH);\n\n if (hasFail) {\n return 'danger';\n }\n\n if (hasWarning) {\n return 'warning';\n }\n\n // Legacy returns GOOD when issues array exists but has no fail/warning\n return 'good';\n};\n\nexport const getStatusType = (record?: DkimRecord | null): StatusValue => {\n const cardType = getCardType(record);\n\n switch (cardType) {\n case 'good':\n return STATUS.PASS;\n case 'warning':\n return STATUS.WARNING;\n case 'danger':\n return STATUS.FAIL;\n default:\n return STATUS.INFO;\n }\n};\n\nconst buildNoSelectorContent = (t: TranslationFn): ReactNode => {\n const content = t('card.dkim.no-selectors-found_md', {\n returnObjects: true,\n }) as string | string[] | ReactNode;\n\n if (Array.isArray(content)) {\n const lines = content.filter((line): line is string => typeof line === 'string' && line.trim().length > 0);\n\n return (\n <NoSelectorsContainer>\n {lines.map((line, idx) => (\n <p key={idx}>{parseGlossaryMarkdown(line)}</p>\n ))}\n </NoSelectorsContainer>\n );\n }\n\n if (typeof content === 'string' && content.trim()) {\n return (\n <NoSelectorsContainer>\n <p>{parseGlossaryMarkdown(content)}</p>\n </NoSelectorsContainer>\n );\n }\n\n return (\n <NoSelectorsContainer>\n <p>{t('card.dkim.no-selectors-found_md')}</p>\n </NoSelectorsContainer>\n );\n};\n\n// ============================================================================\n// ============================================================================\n// Selector Dropdown Component\n// ============================================================================\n\nconst SelectorDropdown: React.FC<SelectorDropdownProps> = ({\n records,\n currentRecord,\n selectedRecordIndex,\n cardTypesSummary,\n onSelectChange,\n t,\n}) => {\n if (records.length === 1) {\n return (\n <SelectorSection>\n <Flexbox alignItems=\"center\" gap=\"0.5rem\">\n <span>{t('card.dkim.selector')}:</span>\n <code>{currentRecord.selector ?? ''}</code>\n </Flexbox>\n </SelectorSection>\n );\n }\n\n return (\n <SelectorSection>\n {/* Summary counts */}\n <Flexbox alignItems=\"center\" gap=\"64px\">\n {[STATUS.PASS, STATUS.WARNING, STATUS.FAIL].map((status) =>\n cardTypesSummary[status] ? (\n <TooltipInPortalWrapper\n key={status}\n message={t(`card.dkim.selector-statuses.${status}`, {\n count: cardTypesSummary[status] || 0,\n })}\n className=\"\"\n >\n <Flexbox alignItems=\"center\" gap=\"0.5rem\">\n {status === STATUS.PASS && <Icon icon={mdiCheck} color=\"#02ac61\" size=\"small\" />}\n {status === STATUS.WARNING && <Icon icon={mdiAlert} color=\"#ed6c02\" size=\"small\" />}\n {status === STATUS.FAIL && <Icon icon={mdiClose} color={COLOR.main.red} size=\"small\" />}\n <span>{cardTypesSummary[status]}</span>\n </Flexbox>\n </TooltipInPortalWrapper>\n ) : null\n )}\n </Flexbox>\n\n {/* Selector dropdown */}\n <Flexbox alignItems=\"center\" gap=\"0.5rem\">\n <span>{t('card.dkim.selector')}:</span>\n <Select value={String(selectedRecordIndex)} onChange={(value) => onSelectChange(Number(value))}>\n <Select.Trigger>\n {({ value }: { value?: string }) => {\n const idx = Number(value);\n const record = records[idx];\n const displayText = record.entry?.split('.')?.[0] ?? record.selector ?? '';\n return <TextField value={displayText} isReadOnly aria-label=\"DKIM Selector\" />;\n }}\n </Select.Trigger>\n <Select.Content>\n {records.map((record, idx) => (\n <Item key={String(idx)} value={String(idx)}>\n <Flexbox alignItems=\"center\" gap=\"0.5rem\">\n {getStatusType(record) === STATUS.PASS && <Icon icon={mdiCheck} color=\"#02ac61\" size=\"small\" />}\n {getStatusType(record) === STATUS.WARNING && <Icon icon={mdiAlert} color=\"#ed6c02\" size=\"small\" />}\n {getStatusType(record) === STATUS.FAIL && (\n <Icon icon={mdiClose} color={COLOR.main.red} size=\"small\" />\n )}\n <span>{record.entry?.split('.')?.[0] ?? record.selector ?? ''}</span>\n </Flexbox>\n </Item>\n ))}\n </Select.Content>\n </Select>\n </Flexbox>\n </SelectorSection>\n );\n};\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\n/**\n * SignalCardDkimDomainAnalyzer Component\n *\n * Advanced DKIM Domain Analyzer showing multiple DKIM selectors, key validation,\n * key sizes, algorithms, and detailed DNS records (CNAME and TXT).\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardDkimDomainAnalyzer\n * jmap={{ extsecrep: { dkim: { records: [...] } } }}\n * />\n * ```\n */\nexport const SignalCardDkimDomainAnalyzer: Comp<SignalCardDkimDomainAnalyzerProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardDkimDomainAnalyzerProps\n>(function SignalCardDkimDomainAnalyzer(props, ref) {\n const {\n className,\n jmap,\n onHeightChange,\n bannerVariant,\n useInvestigateColors = false,\n isCollapsible,\n areAllCollapsed: areAllCollapsedProp,\n onCollapseAll: onCollapseAllProp,\n ...forwardedProps\n } = props;\n\n const namespaces = ['investigate', 'statusDetails'];\n const { t } = useMultiNamespaceTranslation(namespaces);\n\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const areAllCollapsed = areAllCollapsedProp !== undefined ? areAllCollapsedProp : internalCollapsed;\n const onCollapseAll = useCallback(\n (collapsed: boolean) => {\n setInternalCollapsed(collapsed);\n onCollapseAllProp?.(collapsed);\n },\n [onCollapseAllProp]\n );\n\n const dmarc = jmap.extsecrep.dmarc;\n const dkim = jmap.extsecrep.dkim;\n\n // Delegate data extraction to signal-logic via adapter\n const adapterResult = useMemo(() => {\n if (!dkim) return null;\n return adaptDomainAnalyzerDkimExtractor(dkim as any, t, { domain: (dmarc as any)?.domain ?? '' });\n }, [dkim, t, dmarc]);\n\n const records = useMemo<DkimRecord[]>(() => {\n if (!dkim || !Array.isArray(dkim.records)) {\n return [];\n }\n\n return dkim.records.map((record) => {\n // Normalize selector from entry if missing\n const selector = record.selector ?? (record.entry ? record.entry.replace(/\\._domainkey.*$/, '') : null);\n\n return { ...record, selector };\n }) as DkimRecord[];\n }, [dkim?.records]);\n\n const [selectedRecordIndex, setSelectedRecordIndex] = useState<number>(0);\n const recordCount = records.length;\n\n useEffect(() => {\n if (!recordCount && selectedRecordIndex !== 0) {\n setSelectedRecordIndex(0);\n return;\n }\n\n const maxIndex = recordCount ? recordCount - 1 : 0;\n if (selectedRecordIndex > maxIndex) {\n setSelectedRecordIndex(maxIndex);\n }\n }, [recordCount, selectedRecordIndex]);\n\n const currentRecord = useMemo<DkimRecord | null>(() => {\n return records[selectedRecordIndex] ?? null;\n }, [records, selectedRecordIndex]);\n\n const currentCardType = useMemo<CardStatus>(() => getCardType(currentRecord), [currentRecord]);\n\n const cardTypesSummary = useMemo<Record<StatusValue, number>>(() => {\n return records.reduce((acc, record) => {\n const status = getStatusType(record);\n acc[status] = (acc[status] ?? 0) + 1;\n return acc;\n }, {} as Record<StatusValue, number>);\n }, [records]);\n\n // Handle no selectors case\n if (!records.length || !currentRecord) {\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title={'DKIM Selector'}\n type=\"DKIM\"\n cardType=\"info\" // Use info card type for no records, not unknown\n icon={\n bannerVariant === 'standard' ? (\n <Icon icon={mdiEmail} color={COLOR.main.white} size=\"xxlarge\" />\n ) : (\n <Icon icon={mdiEmail} color=\"#1976d2\" size=\"large\" />\n )\n }\n introDescription={buildNoSelectorContent(t)}\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n data-testid=\"signal-card-dkim-da\"\n data-card-type=\"info\"\n />\n );\n }\n\n // Get current selector data from signal-logic adapter\n const currentSelectorData = adapterResult?.selectorResults?.[selectedRecordIndex];\n\n // Post-process extracted items: inject arrow icon between CNAME/TXT, apply markdown to string labels\n const extractedItemsCategories = (currentSelectorData?.extractedItemsCategories ?? []).map((cat, catIdx) => {\n let items = (cat.items ?? []).map((item) => ({\n ...item,\n label: typeof item.label === 'string' ? parseGlossaryMarkdown(item.label) : item.label,\n }));\n\n // DNS Records category: inject arrow icon between CNAME and TXT (React-specific visual)\n if (catIdx === 0 && currentRecord.cname && items.length >= 2) {\n const withArrow = [...items];\n withArrow.splice(1, 0, {\n label: '' as any,\n text: <Icon margin=\"0 auto\" icon={mdiArrowDownBold} size={{ width: 24, height: 24 }} />,\n inline: false,\n });\n items = withArrow;\n }\n\n return { ...cat, items };\n });\n\n const infoItemsCategories = currentSelectorData?.infoItemsCategories ?? [];\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = [\n ...extractedItemsCategories\n .filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extractedItems-${i}`,\n title: cat.title,\n testId: `dkim-da-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })),\n ...infoItemsCategories.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `dkim-da-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })),\n ];\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title={'DKIM Selector'}\n type=\"DKIM\"\n cardType={currentCardType}\n sections={sections}\n introDescription={\n <SelectorDropdown\n records={records}\n currentRecord={currentRecord}\n selectedRecordIndex={selectedRecordIndex}\n cardTypesSummary={cardTypesSummary}\n onSelectChange={setSelectedRecordIndex}\n t={t}\n />\n }\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n data-testid=\"signal-card-dkim-da\"\n data-card-type={currentCardType}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n />\n );\n});\n\nSignalCardDkimDomainAnalyzer.displayName = COMPONENT_NAME;\nSignalCardDkimDomainAnalyzer.className = CLASSNAME;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Icon } from '@redsift/design-system';\nimport { mdiCheck, mdiClose, mdiAlert } from '@redsift/icons';\nimport type { DmarcProps } from '@redsift/signal-logic';\nimport type { BaseCardType } from '../../types/extractor';\nimport { FONT } from '../signal-card-styles';\n\nconst SAND = '#f5f2eb';\n\ntype BoxStatus = 'good' | 'danger' | 'warning';\n\nexport type EmailComplianceState = 'pass' | 'fail-both' | 'fail-dkim' | 'fail-spf' | 'none' | 'permerror' | 'temperror';\n\nexport type DomainPolicyState =\n | 'reject-full'\n | 'reject-full-sp-weak'\n | 'reject-partial'\n | 'reject-partial-sp-weak'\n | 'quarantine-full'\n | 'quarantine-full-sp-weak'\n | 'quarantine-partial'\n | 'quarantine-partial-sp-weak'\n | 'none'\n | 'no-record'\n | 'permerror'\n | 'temperror';\n\n/**\n * Determines the email compliance state from DMARC data.\n * Returns null when compliance cannot be determined (permerror, temperror, none).\n */\nexport function getEmailComplianceState(dmarc: DmarcProps | undefined): EmailComplianceState | null {\n if (!dmarc) return null;\n if (dmarc.result === 'pass') return 'pass';\n if (dmarc.result === 'fail') {\n if (!dmarc.alignDkim && !dmarc.alignSpf) return 'fail-both';\n if (!dmarc.alignDkim) return 'fail-dkim';\n return 'fail-spf';\n }\n // Subdomains may have result='none' (no own DMARC TXT record) but inherit\n // a policy from the organisational domain. When alignment data is available,\n // evaluate compliance based on it instead of returning 'none'.\n if (dmarc.result === 'none') {\n if (dmarc.policy) {\n if (dmarc.alignDkim || dmarc.alignSpf) return 'pass';\n if (dmarc.alignDkim === false && dmarc.alignSpf === false) return 'fail-both';\n if (dmarc.alignDkim === false) return 'fail-dkim';\n if (dmarc.alignSpf === false) return 'fail-spf';\n }\n return 'none';\n }\n if (dmarc.result === 'permerror') {\n // RFC 7489 §6.6.3: when rua is present, receivers fall back to p=none.\n // Compliance CAN be determined — evaluate alignment normally.\n const hasRua = Boolean(dmarc.policy?.rua?.length) || /(?:^|;\\s*)rua\\s*=\\s*mailto:/i.test(dmarc.raw ?? '');\n if (hasRua) {\n if (dmarc.alignDkim || dmarc.alignSpf) return 'pass';\n if (dmarc.alignDkim === false && dmarc.alignSpf === false) return 'fail-both';\n if (dmarc.alignDkim === false) return 'fail-dkim';\n if (dmarc.alignSpf === false) return 'fail-spf';\n }\n return 'permerror';\n }\n if (dmarc.result === 'temperror') return 'temperror';\n // Treat unexpected result values (neutral, policy, warning) as failures\n if (dmarc.result) return 'fail-both';\n return null;\n}\n\n/**\n * Determines the domain policy state from DMARC data.\n */\nexport function getDomainPolicyState(dmarc: DmarcProps | undefined): DomainPolicyState {\n if (!dmarc) return 'no-record';\n if (dmarc.result === 'temperror') return 'temperror';\n if (dmarc.result === 'permerror') return 'permerror';\n // Subdomains may have result='none' (no own DMARC TXT record) but still\n // inherit a policy from the organisational domain. Only treat as no-record\n // when there is genuinely no policy object.\n if (!dmarc.policy) return 'no-record';\n const { p, sp, pct = 100 } = dmarc.policy;\n\n // sp is weaker than p when explicitly set to a less restrictive mode\n const isSpWeak =\n sp !== undefined &&\n ((p === 'reject' && (sp === 'quarantine' || sp === 'none')) || (p === 'quarantine' && sp === 'none'));\n\n if (p === 'reject') {\n if (pct >= 100) return isSpWeak ? 'reject-full-sp-weak' : 'reject-full';\n return isSpWeak ? 'reject-partial-sp-weak' : 'reject-partial';\n }\n if (p === 'quarantine') {\n if (pct >= 100) return isSpWeak ? 'quarantine-full-sp-weak' : 'quarantine-full';\n return isSpWeak ? 'quarantine-partial-sp-weak' : 'quarantine-partial';\n }\n return 'none';\n}\n\nconst EMAIL_STATUS: Record<EmailComplianceState, BoxStatus> = {\n pass: 'good',\n 'fail-both': 'danger',\n 'fail-dkim': 'danger',\n 'fail-spf': 'danger',\n none: 'danger',\n permerror: 'warning',\n temperror: 'warning',\n};\n\nconst DOMAIN_STATUS: Record<DomainPolicyState, BoxStatus> = {\n 'reject-full': 'good',\n 'reject-full-sp-weak': 'warning',\n 'reject-partial': 'warning',\n 'reject-partial-sp-weak': 'warning',\n 'quarantine-full': 'warning',\n 'quarantine-full-sp-weak': 'warning',\n 'quarantine-partial': 'warning',\n 'quarantine-partial-sp-weak': 'warning',\n none: 'danger',\n 'no-record': 'danger',\n permerror: 'danger',\n temperror: 'warning',\n};\n\nconst ICON_FOR_STATUS: Record<BoxStatus, string> = {\n good: mdiCheck,\n danger: mdiClose,\n warning: mdiAlert,\n};\n\nconst ICON_COLOR_FOR_STATUS: Record<BoxStatus, string> = {\n good: 'success',\n danger: 'error',\n warning: 'warning',\n};\n\nconst StyledRow = styled.div`\n display: flex;\n gap: 16px;\n align-items: stretch;\n width: 100%;\n margin-bottom: 24px;\n\n @media (min-width: 766px) {\n margin-top: 24px;\n }\n\n @media (max-width: 765px) {\n flex-direction: column;\n margin-bottom: 24px;\n }\n`;\n\nconst StyledBox = styled.div`\n flex: 1 0 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n background: var(--sand, ${SAND});\n border-radius: 8px;\n padding: 12px 8px 12px 16px;\n`;\n\nconst StyledTitleRow = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`;\n\nconst StyledIconWrapper = styled.span`\n display: flex;\n align-items: center;\n flex-shrink: 0;\n`;\n\nconst StyledTitle = styled.span`\n font-family: var(--sc-font-heading, ${FONT.TYPE.HEADING});\n font-size: 20px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--sc-text-darkest);\n white-space: nowrap;\n`;\n\nconst StyledBody = styled.p`\n font-family: var(--sc-font-body, ${FONT.TYPE.TEXT});\n font-size: 14px;\n font-weight: 400;\n line-height: 1.4;\n color: var(--sc-text-color);\n margin: 0;\n padding-left: 32px;\n`;\n\ninterface SummaryBoxProps {\n title: string;\n body: React.ReactNode;\n status: BoxStatus;\n 'data-testid'?: string;\n}\n\nfunction SummaryBox({ title, body, status, 'data-testid': testId }: SummaryBoxProps) {\n return (\n <StyledBox data-testid={testId}>\n <StyledTitleRow>\n <StyledIconWrapper>\n <Icon icon={ICON_FOR_STATUS[status] as any} size=\"medium\" color={ICON_COLOR_FOR_STATUS[status]} />\n </StyledIconWrapper>\n <StyledTitle>{title}</StyledTitle>\n </StyledTitleRow>\n <StyledBody>{body}</StyledBody>\n </StyledBox>\n );\n}\n\nexport interface DmarcSummaryBoxesProps {\n dmarc: DmarcProps | undefined;\n isDomainAnalyzer?: boolean;\n /** Card-level status from signal-logic. Used to distinguish permerror sub-cases (rua present → warning, no rua → danger). */\n cardType?: BaseCardType;\n t: (key: string, params?: Record<string, unknown>) => string;\n}\n\n/**\n * Report messages that have corresponding translation keys (`card.dmarc.${slug}`).\n * Other report messages are human-readable descriptions (e.g. \"No DMARC policy is published\")\n * that must NOT be interpolated into a translation key.\n */\nconst TRANSLATABLE_REPORT_MESSAGES = new Set([\n 'receiver-does-not-accept-reports-rua',\n 'receiver-does-not-accept-reports-ruf',\n 'receiver-does-not-accept-reports-both',\n]);\n\n/**\n * Returns the subset of dmarc.report entries that are translatable warnings.\n */\nfunction getTranslatableReportWarnings(dmarc: DmarcProps | undefined) {\n if (!Array.isArray(dmarc?.report)) return [];\n return dmarc!.report!.filter((r) => r.message && TRANSLATABLE_REPORT_MESSAGES.has(r.message));\n}\n\n/**\n * Returns true when the DMARC report array contains receiver/reporting warnings\n * (e.g. RUA/RUF recipients not configured to accept reports).\n */\nexport function hasReportWarnings(dmarc: DmarcProps | undefined): boolean {\n return getTranslatableReportWarnings(dmarc).length > 0;\n}\n\n/**\n * Returns true when the subdomain has no own DMARC TXT record but inherits\n * a policy from its organisational (parent) domain.\n */\nexport function isInheritedPolicy(dmarc: DmarcProps | undefined): boolean {\n if (!dmarc) return false;\n if (dmarc.result !== 'none' || !dmarc.policy) return false;\n if (!dmarc.policyDomain || !dmarc.fromDomain) return false;\n // policyDomain is e.g. '_dmarc.redsift.io', fromDomain is 'sub.redsift.io'\n const orgDomain = dmarc.policyDomain.replace(/^_dmarc\\./, '');\n return orgDomain !== dmarc.fromDomain;\n}\n\n/**\n * DmarcSummaryBoxes renders two side-by-side summary boxes for the DMARC card.\n *\n * - Box 1 (\"Email: Compliance\") summarises whether the specific email passed DMARC.\n * Hidden in domain-analyzer mode (no email to evaluate) and when result is an error.\n * - Box 2 (\"Domain: Policy\") summarises the domain's DMARC policy strength. Always shown.\n *\n * On smaller viewports (≤765px) the boxes stack vertically.\n */\nexport function DmarcSummaryBoxes({ dmarc, isDomainAnalyzer = false, t }: DmarcSummaryBoxesProps) {\n const domainState = getDomainPolicyState(dmarc);\n const emailState = isDomainAnalyzer ? null : getEmailComplianceState(dmarc);\n const pct = dmarc?.policy?.pct ?? 100;\n const reportWarnings = hasReportWarnings(dmarc);\n const hasRua = Boolean(dmarc?.policy?.rua?.length) || /(?:^|;\\s*)rua\\s*=\\s*mailto:/i.test(dmarc?.raw ?? '');\n const inherited = isInheritedPolicy(dmarc);\n const orgDomain = dmarc?.policyDomain?.replace(/^_dmarc\\./, '') ?? '';\n\n const getDomainBody = (state: DomainPolicyState): React.ReactNode => {\n // When reject-full has report warnings, use a combined summary that replaces\n // specific problem details with a concise impact statement.\n if (state === 'reject-full' && reportWarnings) {\n return t('card.dmarc.summary-domain-reject-full-report-warning');\n }\n\n let body: string;\n switch (state) {\n case 'reject-full':\n body = t('card.dmarc.summary-domain-reject-full');\n break;\n case 'reject-full-sp-weak':\n body = t('card.dmarc.summary-domain-reject-full-sp-weak');\n break;\n case 'reject-partial':\n body = t('card.dmarc.summary-domain-reject-partial', { pct });\n break;\n case 'reject-partial-sp-weak':\n body = t('card.dmarc.summary-domain-reject-partial-sp-weak', { pct });\n break;\n case 'quarantine-full':\n body = t('card.dmarc.summary-domain-quarantine-full');\n break;\n case 'quarantine-full-sp-weak':\n body = t('card.dmarc.summary-domain-quarantine-full-sp-weak');\n break;\n case 'quarantine-partial':\n body = t('card.dmarc.summary-domain-quarantine-partial', { pct });\n break;\n case 'quarantine-partial-sp-weak':\n body = t('card.dmarc.summary-domain-quarantine-partial-sp-weak', { pct });\n break;\n case 'none':\n body = t('card.dmarc.summary-domain-none');\n break;\n case 'no-record':\n body = t('card.dmarc.summary-domain-no-record');\n break;\n case 'permerror':\n body = hasRua\n ? t('card.dmarc.summary-domain-permerror-rua-fallback')\n : t('card.dmarc.summary-domain-permerror');\n break;\n case 'temperror':\n body = t('card.dmarc.summary-domain-temperror');\n break;\n }\n\n if (reportWarnings) {\n const warnings = getTranslatableReportWarnings(dmarc)\n .map((r) => {\n const { message, ...params } = r;\n return t(`card.dmarc.${message}`, params);\n })\n .join(' ');\n body = `${body} ${warnings}`;\n }\n\n if (inherited) {\n const prefix = t('card.dmarc.summary-domain-inherited-prefix', { orgDomain });\n body = `${prefix} ${body}`;\n }\n\n return body;\n };\n\n const getEmailBody = (state: EmailComplianceState): string => {\n switch (state) {\n case 'pass':\n return t('card.dmarc.summary-email-pass');\n case 'fail-both':\n return t('card.dmarc.summary-email-fail-both');\n case 'fail-dkim':\n return t('card.dmarc.summary-email-fail-dkim');\n case 'fail-spf':\n return t('card.dmarc.summary-email-fail-spf');\n case 'none':\n return t('card.dmarc.summary-email-none');\n case 'permerror':\n return t('card.dmarc.summary-email-permerror');\n case 'temperror':\n return t('card.dmarc.summary-email-temperror');\n }\n };\n\n return (\n <StyledRow data-testid=\"dmarc-summary-boxes\">\n {emailState && (\n <SummaryBox\n title={t('card.dmarc.summary-email-title')}\n body={getEmailBody(emailState)}\n status={EMAIL_STATUS[emailState]}\n data-testid=\"dmarc-summary-email\"\n />\n )}\n <SummaryBox\n title={t('card.dmarc.summary-domain-title')}\n body={getDomainBody(domainState)}\n status={\n reportWarnings && DOMAIN_STATUS[domainState] === 'good'\n ? 'warning'\n : domainState === 'permerror' && hasRua\n ? 'warning'\n : DOMAIN_STATUS[domainState]\n }\n data-testid=\"dmarc-summary-domain\"\n />\n </StyledRow>\n );\n}\n","import React, { forwardRef, useState, useCallback, useMemo } from 'react';\nimport type { Comp } from '@redsift/design-system';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist, { ChecklistItem } from '../../components/ui/Checklist/Checklist';\nimport type { SignalCardDmarcProps } from './types';\nimport { adaptDmarcExtractor } from '../../adapters/extractor-adapter';\nimport { DmarcSummaryBoxes } from './DmarcSummaryBoxes';\nimport { DmarcPromoBanner } from './DmarcPromoBanner';\n\nconst COMPONENT_NAME = 'SignalCardDmarc';\nconst CLASSNAME = 'redsift-signal-card-dmarc';\n\n/**\n * SignalCardDmarc displays DMARC (Domain-based Message Authentication, Reporting & Conformance)\n * authentication results, alignment checks, and policy information.\n */\nexport const SignalCardDmarc: Comp<SignalCardDmarcProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n jmap: {\n extsecrep: { dmarc, dkim, spf },\n },\n jmap,\n isDomainAnalyzer = false,\n useInvestigateColors = false,\n isCollapsible,\n areAllCollapsed: areAllCollapsedProp,\n onCollapseAll: onCollapseAllProp,\n renderHeader,\n promoHref,\n className,\n ...forwardedProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const areAllCollapsed = areAllCollapsedProp !== undefined ? areAllCollapsedProp : internalCollapsed;\n const onCollapseAll = useCallback(\n (collapsed: boolean) => {\n setInternalCollapsed(collapsed);\n onCollapseAllProp?.(collapsed);\n },\n [onCollapseAllProp]\n );\n\n const { cardType, extractedItemsCategories, infoItemsCategories } = useMemo(\n () => adaptDmarcExtractor(dmarc, dkim, spf, jmap, t, isDomainAnalyzer),\n [dmarc, dkim, spf, jmap, t, isDomainAnalyzer]\n );\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n // Build a renderHeader that places summary boxes above the promo banner.\n // Respects the external renderHeader prop: null suppresses the banner, a function replaces it.\n const effectiveRenderHeader = useCallback(() => {\n const bannerContent = (() => {\n if (renderHeader === null) return null;\n if (renderHeader !== undefined) return renderHeader();\n return (\n <DmarcPromoBanner\n text={t('dmarc-promo.text')}\n buttonLabel={t('dmarc-promo.button')}\n useInvestigateColors={useInvestigateColors}\n href={promoHref}\n />\n );\n })();\n\n return (\n <>\n <DmarcSummaryBoxes dmarc={dmarc} isDomainAnalyzer={isDomainAnalyzer} cardType={cardType} t={t} />\n {bannerContent}\n </>\n );\n }, [dmarc, isDomainAnalyzer, cardType, t, renderHeader, useInvestigateColors, promoHref]);\n\n const sections = [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extracted-${i}`,\n title: cat.title,\n testId: `dmarc-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `checklist-${i}`,\n title: cat.title,\n testId: `dmarc-checklist-${i}`,\n content: <Checklist items={cat.items as ChecklistItem[]} />,\n })) || []),\n ];\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n title={'DMARC'}\n type=\"DMARC\"\n cardType={cardType}\n sections={sections}\n renderHeader={effectiveRenderHeader}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n className={className}\n ref={ref}\n data-testid=\"signal-card-dmarc\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardDmarc.className = CLASSNAME;\nSignalCardDmarc.displayName = COMPONENT_NAME;\n","import React, { forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport type { SignalCardDnssecProps } from './types';\nimport { adaptDnssecExtractor } from '../../adapters/extractor-adapter';\n\nconst COMPONENT_NAME = 'SignalCardDnssec';\nconst CLASSNAME = 'redsift-signal-card-dnssec';\n\n/**\n * SignalCardDnssec Component\n *\n * Displays DNSSEC (DNS Security Extensions) validation status for a domain.\n * DNSSEC adds cryptographic signatures to DNS data to ensure authenticity and integrity.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardDnssec\n * jmap={{ extsecrep: { dnsSecurity: { result: 'pass' } } }}\n * shortDescription=\"Custom description\"\n * />\n * ```\n */\nexport const SignalCardDnssec: Comp<SignalCardDnssecProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardDnssecProps\n>(function SignalCardDnssec(props, ref) {\n const { className, jmap, shortDescription, onHeightChange, useInvestigateColors = false, ...forwardedProps } = props;\n const { t } = useSignalCardTranslation('investigate');\n const dnsSecurity = jmap?.extsecrep?.dnsSecurity;\n\n const extData = useMemo(() => {\n if (!dnsSecurity) return null;\n return adaptDnssecExtractor(dnsSecurity, t);\n }, [dnsSecurity, t]);\n\n const sections = useMemo(() => {\n if (!dnsSecurity || !extData) return [];\n const { infoItemsCategories } = extData;\n return [\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `dnssec-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ];\n }, [dnsSecurity, extData]);\n\n if (!dnsSecurity || !extData) return null;\n\n const { cardType } = extData;\n const sectionIds = sections.map((s) => s.id);\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title=\"DNSSEC\"\n type=\"DNSSEC\"\n cardType={cardType}\n sections={sections}\n customSectionOrder={['introDescription', ...sectionIds]}\n shortDescription={dnsSecurity.result === 'pass' ? shortDescription : t('signal-description.DNSSEC_md_SHORT_fail')}\n onHeightChange={onHeightChange}\n data-testid=\"signal-card-dnssec\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardDnssec.displayName = COMPONENT_NAME;\nSignalCardDnssec.className = CLASSNAME;\n","import React, { forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { useCollapseController } from '../../hooks/useCollapseController';\n\nimport { adaptFcrdnsExtractor } from '../../adapters/extractor-adapter';\nimport { nodeARecord, nodePtrRecord, nodeSenderIp, nodeEhlo, nodeError } from './node-helpers';\nimport type { SignalCardFcrdnsProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardFcrdns';\nconst CLASSNAME = 'redsift-signal-card-fcrdns';\n\n/**\n * SignalCardFcrdns Component\n *\n * Displays Forward Confirmed Reverse DNS (FCrDNS) validation results with\n * interactive Sankey diagrams showing DNS resolution flows.\n *\n * FCrDNS verification helps prevent email spoofing by ensuring the sender's\n * IP address matches forward and reverse DNS lookups.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardFcrdns\n * jmap={{ extsecrep: { ehlo: { isAddrDomain: true } } }}\n * investigate={{ fcrdns: fcrdnsData, ehloCheck: ehloCheckData }}\n * />\n * ```\n */\nexport const SignalCardFcrdns: Comp<SignalCardFcrdnsProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardFcrdnsProps\n>(function SignalCardFcrdns(props, ref) {\n const {\n className,\n jmap: { extsecrep = {} } = {},\n investigate,\n onHeightChange,\n bannerVariant,\n useInvestigateColors = false,\n renderFooter,\n isCollapsible,\n areAllCollapsed: areAllCollapsedProp,\n onCollapseAll,\n ...forwardedProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n\n const fcrdns = investigate?.fcrdns ?? {};\n const ehloCheck = investigate?.ehloCheck ?? {};\n const { ehlo } = extsecrep;\n\n const {\n areAllCollapsed,\n handleCollapseAll,\n isCollapsible: resolvedIsCollapsible,\n } = useCollapseController({\n areAllCollapsed: areAllCollapsedProp,\n onCollapseAll,\n isCollapsible,\n });\n\n // Memoize the extracted data so Sankey charts don't re-render on parent updates\n const { cardType, extractedItemsCategories, infoItemsCategories } = useMemo(\n () => adaptFcrdnsExtractor(fcrdns, ehloCheck, ehlo, t),\n [fcrdns, ehloCheck, ehlo, t]\n );\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extractedItems-${i}`,\n title: cat.title,\n testId: `fcrdns-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `fcrdns-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ];\n\n const sectionIds = sections.map((s) => s.id);\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title=\"FCrDNS\"\n type=\"FCRDNS\"\n cardType={cardType}\n sections={sections}\n customSectionOrder={['introDescription', ...sectionIds]}\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n data-testid=\"signal-card-fcrdns\"\n data-card-type={cardType}\n renderFooter={renderFooter}\n isCollapsible={resolvedIsCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={handleCollapseAll}\n />\n );\n});\n\nSignalCardFcrdns.displayName = COMPONENT_NAME;\nSignalCardFcrdns.className = CLASSNAME;\n\n// Export helper functions for testing\nexport { nodeARecord, nodePtrRecord, nodeSenderIp, nodeEhlo, nodeError, SignalCardFcrdns as SignalCardFcrdnsBase };\n","/* istanbul ignore file */\n/**\n * Styled components for SignalCardGoogleYahooCompliance.\n *\n * All theming uses CSS variables with Design System fallbacks.\n * When SignalCardThemeProvider sets useInvestigateColors=true,\n * these will be overridden with Investigate-specific fonts.\n */\nimport styled from 'styled-components';\n\n// Default fallback values - use DS CSS variables with hardcoded ultimate fallbacks\nconst DS_FONT_BODY = \"var(--redsift-typography-body-font-family, 'Poppins', sans-serif)\";\nconst DS_TEXT_COLOR = 'var(--redsift-color-neutral-x-dark-grey, #3B3A58)';\nconst DS_WARNING_COLOR = 'var(--redsift-color-notifications-warning-primary, #f5a623)';\n\n/**\n * Wrapper for intro paragraph content with standardized typography\n */\nexport const StyledIntroWrapper = styled.div`\n p {\n font-size: 14px;\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n line-height: 1.5;\n margin: 0 0 0.5rem 0;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n\n b,\n strong {\n font-weight: 600;\n }\n\n a {\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n }\n }\n`;\n\n/**\n * Warning message container with icon and text alignment\n */\nexport const StyledWarningMessage = styled.p`\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n font-size: 14px;\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n line-height: 1.5;\n margin: 0 0 0.5rem 0;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n\n svg {\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n margin-top: 2px;\n color: var(--sc-warning-color, ${DS_WARNING_COLOR});\n }\n\n a {\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n }\n`;\n","import React, { forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { Link, Icon } from '@redsift/design-system';\nimport type { Comp } from '@redsift/design-system';\nimport { mdiAlert } from '@redsift/icons';\n\n// Core imports\nimport { SignalCardNormal, type ItemCategory } from '../SignalCardNormal';\nimport Checklist, { ChecklistItem } from '../../components/ui/Checklist/Checklist';\n\n// Type imports\nimport type { JmapProps, InvestigateProps } from '../../types';\n\n// Legacy redux\nimport { parseGlossaryMarkdown } from '../../utils/parse-glossary-markdown';\n\nimport { StyledIntroWrapper, StyledWarningMessage } from './styles';\nimport type {\n SignalCardGoogleYahooComplianceProps,\n ExtractDataResult,\n ComputeStatusParams,\n ComputeStatusResult,\n} from './types';\nimport { extractGoogleYahooComplianceData, statusToTranslationKey, getAlignPolicy } from '@redsift/signal-logic';\n\nconst COMPONENT_NAME = 'SignalCardGoogleYahooCompliance';\nconst CLASSNAME = 'redsift-signal-card-google-yahoo-compliance';\n\nfunction extractData(\n jmap: JmapProps | null,\n investigate: InvestigateProps | null,\n t: ReturnType<typeof useSignalCardTranslation>['t'],\n tRoot?: ReturnType<typeof useSignalCardTranslation>['t']\n): ExtractDataResult {\n const data = extractGoogleYahooComplianceData(jmap, investigate, tRoot || t);\n\n if (!data) {\n return {\n cardType: 'unknown',\n infoItemsCategories: [],\n introDescription: null,\n };\n }\n\n const {\n cardType,\n spfStatus,\n dkimStatus,\n spfAlignStatus,\n dkimAlignStatus,\n spfPolicy,\n dkimPolicy,\n dmarcStatus,\n dmarcPolicy,\n senderIpStatus,\n ehloStatus,\n senderIpMatchesEhloARecordStatus,\n tlsStatus,\n tlsVersion,\n oneClickUnsubStatus,\n } = data;\n\n // Build intro description with warning if needed\n const introDescription = (\n <StyledIntroWrapper>\n <p>\n <b>Microsoft</b>, <b>Google</b> {t('summary.and')} <b>Yahoo</b> {t('summary.requirements')}{' '}\n <b>—{t('summary.bulk-senders')}—</b> {t('summary.must-be-met')}{' '}\n <Link href=\"https://redsift.com/guides/google-and-yahoos-bulk-email-sender-requirements\" target=\"_blank\">\n {t('summary.learn-more')}\n </Link>\n </p>\n {oneClickUnsubStatus === 'warning' && (\n <StyledWarningMessage>\n <Icon icon={mdiAlert} size=\"small\" color=\"#ed6c02\" />\n <span>\n {parseGlossaryMarkdown(t('section.one-click-unsub.evaluation.warning'))}{' '}\n <Link href=\"https://community.redsift.com/s/article/000002111\" target=\"_blank\">\n {t('section.one-click-unsub.learn_more')}\n </Link>\n </span>\n </StyledWarningMessage>\n )}\n </StyledIntroWrapper>\n );\n\n // SPF and DKIM section\n const spfDkimCategory: ItemCategory = {\n title: t('section.spf-dkim.header'),\n caption: '',\n items: [\n {\n type: spfStatus,\n text: parseGlossaryMarkdown(t(`section.spf-dkim.spf.${statusToTranslationKey(spfStatus)}_md`)),\n },\n {\n type: dkimStatus,\n text: parseGlossaryMarkdown(t(`section.spf-dkim.dkim.${statusToTranslationKey(dkimStatus)}_md`)),\n },\n ],\n };\n\n // SPF or DKIM Alignment section\n const alignmentCategory: ItemCategory = {\n title: t('section.spf-dkim-alignment.header'),\n caption: '',\n items: [\n {\n type: spfAlignStatus,\n text: parseGlossaryMarkdown(\n t(`section.spf-dkim-alignment.align-spf.${statusToTranslationKey(spfAlignStatus)}_md`, { policy: spfPolicy })\n ),\n },\n {\n type: dkimAlignStatus,\n text: parseGlossaryMarkdown(\n t(`section.spf-dkim-alignment.align-dkim.${statusToTranslationKey(dkimAlignStatus)}_md`, {\n policy: dkimPolicy,\n })\n ),\n },\n ],\n };\n\n // DMARC section\n const dmarcCategory: ItemCategory = {\n title: t('section.dmarc.header'),\n caption: '',\n items: [\n {\n type: dmarcStatus,\n text: parseGlossaryMarkdown(t(`section.dmarc.evaluation.${statusToTranslationKey(dmarcStatus)}_md`)),\n },\n {\n type: dmarcStatus,\n text: parseGlossaryMarkdown(\n t(`section.dmarc.policy.${statusToTranslationKey(dmarcStatus)}_md`, {\n policy: dmarcPolicy,\n })\n ),\n },\n ],\n };\n\n // FCrDNS section\n const fcrdnsCategory: ItemCategory = {\n title: t('section.fcrdns.header'),\n caption: '',\n items: [\n {\n type: senderIpStatus,\n text: parseGlossaryMarkdown(t(`section.fcrdns.sender-ip.${statusToTranslationKey(senderIpStatus)}_md`)),\n },\n {\n type: ehloStatus,\n text: parseGlossaryMarkdown(t(`section.fcrdns.ehlo.${statusToTranslationKey(ehloStatus)}_md`)),\n },\n {\n type: senderIpMatchesEhloARecordStatus,\n text: parseGlossaryMarkdown(\n t(\n `section.fcrdns.sender-ip-matches-ehlo-a-record.${statusToTranslationKey(\n senderIpMatchesEhloARecordStatus\n )}_md`\n )\n ),\n },\n ],\n };\n\n // Spam Rate section\n const reputationCategory: ItemCategory = {\n title: t('section.reputation.header'),\n caption: '',\n items: [\n {\n type: 'info',\n text: (\n <>\n {parseGlossaryMarkdown(t('section.reputation.summary_md'))}{' '}\n {parseGlossaryMarkdown(t('section.reputation.information_md'))}\n </>\n ),\n },\n ],\n };\n\n // TLS section\n const tlsCategory: ItemCategory = {\n title: t('section.tls.header'),\n caption: '',\n items: [\n {\n type: tlsStatus,\n text: parseGlossaryMarkdown(\n t(`section.tls.evaluation.${statusToTranslationKey(tlsStatus)}_md`, {\n version: tlsVersion?.version,\n })\n ),\n },\n ],\n };\n\n // One-click unsubscribe section\n const oneClickUnsubCategory: ItemCategory = {\n title: t('section.one-click-unsub.header'),\n caption: '',\n items: [\n {\n type: oneClickUnsubStatus,\n text: (\n <>\n {oneClickUnsubStatus === 'warning' ? (\n <>{t('section.one-click-unsub.evaluation.warning')}</>\n ) : (\n <>\n {parseGlossaryMarkdown(\n t(`section.one-click-unsub.evaluation.${statusToTranslationKey(oneClickUnsubStatus)}_md`, {\n defaultValue:\n oneClickUnsubStatus === 'good'\n ? 'One-click unsubscribe link is present.'\n : 'One-click unsubscribe link **is not** present.',\n })\n )}\n </>\n )}{' '}\n <Link href=\"https://community.redsift.com/s/article/000002111\" target=\"_blank\">\n {t('section.one-click-unsub.learn_more')}\n </Link>\n </>\n ),\n },\n ],\n };\n\n const infoItemsCategories: ItemCategory[] = [\n spfDkimCategory,\n alignmentCategory,\n dmarcCategory,\n fcrdnsCategory,\n reputationCategory,\n tlsCategory,\n oneClickUnsubCategory,\n ];\n\n return {\n cardType,\n infoItemsCategories,\n introDescription,\n };\n}\n\n// Legacy export for getSignalStatus.ts compatibility\nexport function computeGoogleYahooComplianceStatus({\n // domain is not used but required for API compatibility\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n domain: _domain,\n jmap,\n investigate,\n}: ComputeStatusParams): ComputeStatusResult | null {\n // Use a dummy translation function for status computation\n const dummyT = (key: string) => key;\n const data = extractGoogleYahooComplianceData(jmap ?? null, investigate ?? null, dummyT);\n\n if (!data) return null;\n\n return { cardType: data.cardType };\n}\n\n/**\n * SignalCardGoogleYahooCompliance Component\n *\n * Displays compliance status for Microsoft, Google, and Yahoo bulk email sender requirements.\n * Shows authentication (SPF, DKIM, DMARC), alignment, FCrDNS, TLS, and one-click unsubscribe status.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardGoogleYahooCompliance\n * jmap={jmapData}\n * investigate={investigateData}\n * />\n * ```\n */\nexport const SignalCardGoogleYahooCompliance: Comp<SignalCardGoogleYahooComplianceProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardGoogleYahooComplianceProps\n>(function SignalCardGoogleYahooCompliance(props, ref) {\n const { className, jmap, investigate, onHeightChange, useInvestigateColors = false, ...forwardedProps } = props;\n const { t } = useSignalCardTranslation('investigate', 'card.google-yahoo-compliance');\n const { t: tRoot } = useSignalCardTranslation('investigate');\n\n const extData = useMemo(\n () => extractData(jmap ?? null, investigate ?? null, t, tRoot),\n [jmap, investigate, t, tRoot]\n );\n\n const { cardType, infoItemsCategories, introDescription } = extData;\n\n const sections = useMemo(\n () =>\n infoItemsCategories.map((category, index) => ({\n id: `category-${index}`,\n title: category.title,\n testId: `google-yahoo-category-${index}`,\n content: <Checklist items={category.items as ChecklistItem[]} />,\n })),\n [infoItemsCategories]\n );\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title={t('title') || 'Microsoft, Google and Yahoo Deliverability Compliance'}\n type=\"GOOGLE_YAHOO_COMPLIANCE\"\n cardType={cardType}\n introDescription={introDescription}\n sections={sections}\n onHeightChange={onHeightChange}\n data-testid=\"signal-card-google-yahoo\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardGoogleYahooCompliance.displayName = COMPONENT_NAME;\nSignalCardGoogleYahooCompliance.className = CLASSNAME;\n\n// Export helper functions for testing\nexport { extractData, getAlignPolicy, statusToTranslationKey };\n","import React, { forwardRef, useMemo, useCallback } from 'react';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport type { Comp } from '@redsift/design-system';\n\n// Core imports\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { adaptMtaStsExtractor } from '../../adapters/extractor-adapter';\n\nimport type { SignalCardMtaStsProps } from './types';\n\n// Re-export signal-logic functions for backward compatibility\nexport { extractMtaStsData as buildMtaStsState, getMtaStsCardType as getCardType } from '@redsift/signal-logic';\n\nconst COMPONENT_NAME = 'SignalCardMtaSts';\nconst CLASSNAME = 'redsift-signal-card-mta-sts';\n\nconst i18nRoot = 'signal-cards.mta-sts';\n\n/**\n * SignalCardMtaSts displays MTA-STS validation results including TLS-RPT records,\n * MTA-STS DNS records, policy file configuration, and SSL certificate status.\n */\nexport const SignalCardMtaSts: Comp<SignalCardMtaStsProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardMtaStsProps\n>(function SignalCardMtaSts(\n {\n jmap,\n domain,\n onHeightChange,\n bannerVariant,\n useInvestigateColors,\n isCollapsible,\n areAllCollapsed,\n onCollapseAll,\n ...forwardedProps\n },\n ref\n) {\n const { t } = useSignalCardTranslation('investigate');\n\n const mtaInfo = jmap?.extsecrep?.mta;\n\n const adapterResult = useMemo(() => {\n if (!mtaInfo) return null;\n return adaptMtaStsExtractor(mtaInfo, t, domain);\n }, [mtaInfo, t, domain]);\n\n const getTranslatedCaption = useCallback(\n (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n },\n [t]\n );\n\n if (!mtaInfo || !adapterResult) return null;\n\n const {\n cardType,\n infoTlsRpt,\n extractedTlsRptCategories,\n infoMtaSts,\n extractedMtaStsCategories,\n infoPolicy,\n extractedItemsPolicy,\n infoCertificate,\n } = adapterResult;\n\n const sections = [\n ...(infoTlsRpt?.map((cat, i) => ({\n id: `tlsRptChecklist-${i}`,\n title: cat.title,\n testId: `mta-sts-tls-rpt-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ...(extractedTlsRptCategories?.map((cat, i) => ({\n id: `extractedItemsTlsRpt-${i}`,\n title: cat.title,\n testId: `mta-sts-tls-rpt-extracted-${i}`,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoMtaSts?.map((cat, i) => ({\n id: `checklistsMtaSts-${i}`,\n title: cat.title,\n testId: `mta-sts-record-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ...(extractedMtaStsCategories?.map((cat, i) => ({\n id: `extractedItemsMtaSts-${i}`,\n title: cat.title,\n testId: `mta-sts-record-extracted-${i}`,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoPolicy?.map((cat, i) => ({\n id: `checklistsPolicy-${i}`,\n title: cat.title,\n testId: `mta-sts-policy-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ...(extractedItemsPolicy?.map((cat, i) => ({\n id: `extractedItemsPolicy-${i}`,\n title: cat.title,\n testId: `mta-sts-policy-extracted-${i}`,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoCertificate?.map((cat, i) => ({\n id: `checklistsCertificate-${i}`,\n title: cat.title,\n testId: `mta-sts-certificate-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ];\n\n const sectionIds = sections.map((s) => s.id);\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n title={t(`${i18nRoot}.title`)}\n type=\"MTA-STS\"\n cardType={cardType}\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n customSectionOrder={['introDescription', ...sectionIds]}\n sections={sections}\n data-testid=\"signal-card-mta-sts\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardMtaSts.className = CLASSNAME;\nSignalCardMtaSts.displayName = COMPONENT_NAME;\n","import React, { useState, useEffect, forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport type { Comp } from '@redsift/design-system';\n\nimport { Ehlo, ReturnPath } from '../../components/glossary/glossary';\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist, { ChecklistItem } from '../../components/ui/Checklist/Checklist';\nimport { getSpfPassResult } from '@redsift/signal-logic';\nimport { adaptSpfExtractor } from '../../adapters/extractor-adapter';\nimport { buildSPFCheckerLink } from '@redsift/signal-logic';\nimport type {\n SignalCardSpfProps,\n SignalCardSpfState,\n SpfIdentity,\n ResultOption,\n SpfPassResult,\n SpfResultEntry,\n ExtractDataResult,\n} from './types';\n\nconst COMPONENT_NAME = 'SignalCardSpf';\nconst CLASSNAME = 'redsift-signal-card-spf';\n\nexport const SignalCardSpf: Comp<SignalCardSpfProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n useInvestigateColors,\n isCollapsible,\n areAllCollapsed,\n onCollapseAll,\n className,\n jmap,\n onHeightChange,\n ...restProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n\n // Build SPF Checker link if domain is available\n const spf = jmap?.extsecrep?.spf;\n const domain = (spf as { domain?: string })?.domain;\n const spfCheckerLink = domain && typeof domain === 'string' ? buildSPFCheckerLink(domain) : null;\n const ctaButtonName = t('card.subdo.button-name');\n const onCTAButtonClick = spfCheckerLink ? () => window.open(spfCheckerLink, '_blank') : undefined;\n\n const computeInitialState = useMemo(() => {\n const { spf } = jmap.extsecrep;\n const spfPassResult = getSpfPassResult({ jmap }) as SpfPassResult;\n const spfResults: SpfResultEntry[] = [];\n const resultOptions: ResultOption[] = [];\n\n const spfTypes: SpfIdentity[] = ['mailfrom', 'helo'];\n spfTypes.forEach((identity, idx) => {\n if (spfPassResult.availableIdentities.includes(identity)) {\n const { cardType, extractedItemsCategories, infoItems } = adaptSpfExtractor(\n spf,\n identity,\n t\n ) as ExtractDataResult;\n const label = identity === 'helo' ? <Ehlo /> : <ReturnPath />;\n spfResults.push({\n cardType,\n extractedItemsCategories,\n infoItems,\n });\n resultOptions.push({ id: idx, label, type: cardType });\n }\n });\n\n if (spfResults.length > 0) {\n const [firstResult] = spfResults;\n return {\n spfResults,\n resultOptions,\n cardType: firstResult.cardType,\n infoItems: firstResult.infoItems,\n extractedItemsCategories: firstResult.extractedItemsCategories,\n resultSelected: 0,\n };\n } else {\n return {\n spfResults: [],\n resultOptions,\n cardType: null,\n infoItems: null,\n extractedItemsCategories: null,\n resultSelected: 0,\n };\n }\n }, [jmap, t]);\n\n const [state, setState] = useState<SignalCardSpfState>(computeInitialState);\n\n useEffect(() => {\n setState(computeInitialState);\n }, [computeInitialState]);\n\n const onResultsChange = (key: number) => {\n const { spfResults } = state;\n const nextResult = spfResults[key];\n\n if (!nextResult) {\n return;\n }\n\n setState((prev) => ({\n ...prev,\n resultSelected: key,\n cardType: nextResult.cardType,\n infoItems: nextResult.infoItems,\n extractedItemsCategories: nextResult.extractedItemsCategories,\n }));\n\n setTimeout(() => {\n onHeightChange?.();\n }, 100);\n };\n\n const { cardType, extractedItemsCategories, infoItems, resultOptions, resultSelected } = state;\n\n // Don't render until we have data (prevents flash of blue header during initialization)\n if (cardType === null) {\n return null;\n }\n\n // NOTE: show error message in card if data is empty or malformed!\n let title: string | React.ReactElement = 'SPF';\n if (resultOptions.length === 1) {\n const Label = () => {\n return <>{resultOptions[0]?.label}</>;\n };\n title = (\n <span>\n SPF for <Label />\n </span>\n );\n }\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extracted-${i}`,\n title: cat.title,\n testId: `spf-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItems?.map((cat, i) => ({\n id: `checklist-${i}`,\n title: cat.title,\n testId: `spf-checklist-${i}`,\n content: <Checklist items={cat.items as ChecklistItem[]} />,\n })) || []),\n ];\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n resultOptions={resultOptions}\n optionsLabel={t('investigate:multiple-results-label-spf')}\n resultSelected={resultSelected}\n onResultsChange={onResultsChange}\n title={title}\n type=\"SPF\"\n {...restProps}\n cardType={cardType ?? undefined}\n sections={sections}\n ctaButtonName={ctaButtonName}\n onCTAButtonClick={onCTAButtonClick}\n data-testid=\"signal-card-spf\"\n data-card-type={cardType ?? 'unknown'}\n />\n );\n});\n\nSignalCardSpf.className = CLASSNAME;\nSignalCardSpf.displayName = COMPONENT_NAME;\n","import React, { forwardRef, useState, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { type CardStatus } from '@redsift/signal-logic';\nimport { SignalCardNormal as SignalCard } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { adaptDomainAnalyzerSpfExtractor } from '../../adapters/extractor-adapter';\nimport type { Comp } from '@redsift/design-system';\n\nimport type { SignalCardSpfDomainAnalyzerProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardSpfDomainAnalyzer';\nconst CLASSNAME = 'redsift-signal-card-spf-domain-analyzer';\n\n/**\n * SignalCardSpfDomainAnalyzer Component\n *\n * Advanced SPF Domain Analyzer showing DNS lookup counts, Dynamic SPF detection,\n * and detailed SPF policy analysis.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardSpfDomainAnalyzer\n * jmap={{ extsecrep: { spf: { status: 'pass', count: 5, ... } } }}\n * />\n * ```\n */\nexport const SignalCardSpfDomainAnalyzer: Comp<SignalCardSpfDomainAnalyzerProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardSpfDomainAnalyzerProps\n>(function SignalCardSpfDomainAnalyzer(props, ref) {\n const {\n className,\n jmap: { extsecrep },\n onHeightChange,\n bannerVariant,\n useInvestigateColors = false,\n ...forwardedProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n const spf = extsecrep?.spf;\n\n const { cardType, extractedItemsCategories, infoItemsCategories, ctaLink } = useMemo(\n () => adaptDomainAnalyzerSpfExtractor(spf as any, t),\n [spf, t]\n );\n\n const ctaButtonName = t('card.subdo.button-name');\n const onCTAButtonClick = ctaLink ? () => window.open(ctaLink, '_blank') : undefined;\n\n // State for collapse all functionality\n const [areAllCollapsed, setAreAllCollapsed] = useState(false);\n const handleCollapseAll = () => {\n setAreAllCollapsed((prev) => !prev);\n };\n\n const getTranslatedCaption = React.useCallback(\n (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n },\n [t]\n );\n\n const sections = useMemo(\n () => [\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extractedItems-${i}`,\n title: cat.title,\n testId: `spf-da-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `spf-da-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ],\n [extractedItemsCategories, infoItemsCategories, getTranslatedCaption]\n );\n\n if (!spf) {\n return null;\n }\n\n return (\n <SignalCard\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title=\"SPF\"\n cardType={cardType as CardStatus}\n sections={sections}\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n useInvestigateColors={useInvestigateColors}\n ctaButtonName={ctaButtonName}\n onCTAButtonClick={onCTAButtonClick}\n shortDescription={t('signal-description.SPF_DOMAIN_ANALYZER_md_SHORT', {\n returnObjects: true,\n })}\n longDescription={t('signal-description.SPF_DOMAIN_ANALYZER_md_LONG', {\n returnObjects: true,\n })}\n isCollapsible={true}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={handleCollapseAll}\n data-testid=\"signal-card-spf-da\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardSpfDomainAnalyzer.displayName = COMPONENT_NAME;\nSignalCardSpfDomainAnalyzer.className = CLASSNAME;\n","import React, { forwardRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\n\nimport { SUBDO_CARD_STATUS as CARD_STATUS } from '@redsift/signal-logic';\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { adaptSubdoExtractor } from '../../adapters/extractor-adapter';\n\n// Re-export signal-logic functions for backward compatibility\nexport { getSubdoCardType as getCardType, getSubdoCheck } from '@redsift/signal-logic';\n\nimport type { SignalCardSubdoProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardSubdo';\nconst CLASSNAME = 'redsift-signal-card-subdo';\n\n/**\n * SignalCardSubdo Component\n *\n * Displays subdomain takeover (Subdo) detection for SPF records.\n * Shows whether SPF records are vulnerable to subdomain poisoning attacks.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardSubdo\n * jmap={{ extsecrep: { spf: { domain: 'example.com', report: [...] } } }}\n * />\n * ```\n */\nexport const SignalCardSubdo: Comp<SignalCardSubdoProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardSubdoProps\n>(function SignalCardSubdo(props, ref) {\n const { className, jmap, onHeightChange, useInvestigateColors = false, ...forwardedProps } = props;\n const { t } = useSignalCardTranslation('investigate');\n\n const spf = jmap?.extsecrep?.spf;\n\n const { cardType, ctaLink, infoItemsCategories } = useMemo(\n () =>\n spf ? adaptSubdoExtractor(spf as any, t) : { cardType: undefined, ctaLink: undefined, infoItemsCategories: [] },\n [spf, t]\n );\n\n if (!spf) return null;\n const ctaButtonName = t('card.subdo.button-name');\n const onCTAButtonClick = ctaLink ? () => window.open(ctaLink, '_blank') : undefined;\n\n if (cardType === CARD_STATUS.GOOD) {\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title={t('card.subdo.not-detected')}\n type=\"SUBDOGOOD\"\n cardType={CARD_STATUS.GOOD}\n onHeightChange={onHeightChange}\n ctaButtonName={ctaButtonName}\n onCTAButtonClick={onCTAButtonClick}\n introDescription={[t('signal-description.SUBDOGOOD_md')]}\n shortDescription={[t('signal-description.SUBDOGOOD_md_SHORT')]}\n longDescription={[]}\n data-testid=\"signal-card-subdo\"\n data-card-type={CARD_STATUS.GOOD}\n />\n );\n }\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title={t('card.subdo.detected')}\n type=\"SUBDOBAD\"\n cardType={CARD_STATUS.DANGER}\n onHeightChange={onHeightChange}\n ctaButtonName={ctaButtonName}\n onCTAButtonClick={onCTAButtonClick}\n introDescription={[t('signal-description.SUBDOBAD_md')]}\n shortDescription={[t('signal-description.SUBDOBAD_md_SHORT')]}\n longDescription={[]}\n sections={\n infoItemsCategories?.length\n ? [\n {\n id: 'subdo-check',\n title: '',\n testId: 'subdo-check-section',\n content: <Checklist items={infoItemsCategories[0].items} />,\n },\n ]\n : []\n }\n data-testid=\"signal-card-subdo\"\n data-card-type={CARD_STATUS.DANGER}\n />\n );\n});\n\nSignalCardSubdo.displayName = COMPONENT_NAME;\nSignalCardSubdo.className = CLASSNAME;\n","import React, { forwardRef, useMemo } from 'react';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport type { Comp } from '@redsift/design-system';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport type { SignalCardThreatInvProps } from './types';\nimport { adaptThreatIntelligenceExtractor } from '../../adapters/extractor-adapter';\n\nconst COMPONENT_NAME = 'SignalCardThreatInv';\nconst CLASSNAME = 'redsift-signal-card-threat-inv';\n\nexport const SignalCardThreatInv: Comp<SignalCardThreatInvProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardThreatInvProps\n>(function SignalCardThreatInv({ jmap, isDomainAnalyzer = false, ...rest }, ref) {\n const extsecrep = jmap?.extsecrep;\n const from = jmap?.from;\n const { t } = useSignalCardTranslation('investigate');\n const sanitizedFrom = useMemo(\n () =>\n from\n ? {\n name: from.name ?? undefined,\n email: from.email ?? undefined,\n }\n : undefined,\n [from]\n );\n\n const extData = useMemo(\n () => adaptThreatIntelligenceExtractor(extsecrep, sanitizedFrom, t, isDomainAnalyzer),\n [extsecrep, sanitizedFrom, t, isDomainAnalyzer]\n );\n\n const sections = useMemo(() => {\n if (!extsecrep?.tl || !extData) {\n return [];\n }\n const { infoItemsCategories } = extData;\n return [\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: cat.title,\n testId: `threat-inv-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ];\n }, [extsecrep?.tl, extData]);\n\n if (!extsecrep?.tl || !extData) {\n return null;\n }\n const { cardType } = extData;\n\n return (\n <SignalCardNormal\n title={t('signal-cards.threat-inv.title') || 'Threat Intelligence'}\n type=\"THREATINV\"\n {...rest}\n ref={ref}\n cardType={cardType}\n sections={sections}\n data-testid=\"signal-card-threat-inv\"\n data-card-type={cardType}\n />\n );\n});\n\nSignalCardThreatInv.className = CLASSNAME;\nSignalCardThreatInv.displayName = COMPONENT_NAME;\n","import React, { forwardRef, useState, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport Checklist from '../../components/ui/Checklist/Checklist';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { adaptTlsExtractor } from '../../adapters/extractor-adapter';\nimport type { Comp } from '@redsift/design-system';\nimport type { ExtractedData, SignalCardTlsProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardTls';\nconst CLASSNAME = 'redsift-signal-card-tls';\n\nexport const SignalCardTls: Comp<SignalCardTlsProps, HTMLDivElement> = forwardRef<HTMLDivElement, SignalCardTlsProps>(\n function SignalCardTls(props, ref) {\n const {\n jmap,\n useInvestigateColors,\n onHeightChange,\n renderFooter,\n bannerVariant,\n className,\n ...divProps\n } = props;\n const tls = jmap?.extsecrep?.tls;\n\n const { t } = useSignalCardTranslation('investigate');\n\n // State for collapse all functionality\n const [areAllCollapsed, setAreAllCollapsed] = useState(false);\n const handleCollapseAll = () => {\n setAreAllCollapsed((prev) => !prev);\n };\n\n const { cardType, extractedItemsCategories, infoItemsCategories } = useMemo(\n () => adaptTlsExtractor(tls, t),\n [tls, t]\n );\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections = [\n ...(infoItemsCategories?.map((cat, i) => ({\n id: `checklists-${i}`,\n title: typeof cat.title === 'string' ? cat.title : undefined,\n testId: `tls-checklist-${i}`,\n content: <Checklist items={cat.items} />,\n })) || []),\n ...(extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extractedItems-${i}`,\n title: typeof cat.title === 'string' ? cat.title : undefined,\n testId: `tls-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || []),\n ];\n\n const sectionIds = sections.map((s) => s.id);\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n title={t('signal-cards.tls.title') || 'TLS'}\n type=\"TLS\"\n cardType={cardType}\n sections={sections}\n customSectionOrder={['resultOptions', 'introDescription', ...sectionIds]}\n isCollapsible={true}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={handleCollapseAll}\n onHeightChange={onHeightChange}\n renderFooter={renderFooter}\n bannerVariant={bannerVariant}\n className={classNames(CLASSNAME, className)}\n ref={ref}\n {...divProps}\n data-testid=\"signal-card-tls\"\n data-card-type={cardType}\n />\n );\n }\n);\n\nSignalCardTls.className = CLASSNAME;\nSignalCardTls.displayName = COMPONENT_NAME;\n\nexport type { SignalCardTlsProps, ExtractedData };\n","import React, { forwardRef, useState, useMemo } from 'react';\nimport classNames from 'classnames';\nimport type { Comp } from '@redsift/design-system';\n\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { ExtractedCategoryContent } from '../SignalCardNormal/SignalCardExtractedItems';\nimport { EXTRACTION_CAPTION_KEYS, type ExtractionCaptionType } from '../SignalCard/components/extraction-box.constants';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport { adaptUrlsExtractor } from '../../adapters/extractor-adapter';\n\nimport type { SignalCardUrlsProps } from './types';\n\nconst COMPONENT_NAME = 'SignalCardUrls';\nconst CLASSNAME = 'redsift-signal-card-urls';\n\n/**\n * SignalCardUrls Component\n *\n * Displays URLs extracted from email messages.\n * Shows clickable HTTP/HTTPS links and plain text for other URL types.\n *\n * @component\n * @example\n * ```tsx\n * <SignalCardUrls\n * investigate={{ urls: ['https://example.com', 'ftp://files.example.com'] }}\n * />\n * ```\n */\nexport const SignalCardUrls: Comp<SignalCardUrlsProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardUrlsProps\n>(function SignalCardUrls(props, ref) {\n const {\n className,\n investigate,\n onHeightChange,\n bannerVariant,\n useInvestigateColors = false,\n ...forwardedProps\n } = props;\n const { t } = useSignalCardTranslation('investigate');\n const urls = investigate?.urls ?? null;\n\n // State for collapse all functionality\n const [areAllCollapsed, setAreAllCollapsed] = useState(false);\n const handleCollapseAll = () => {\n setAreAllCollapsed((prev) => !prev);\n };\n\n const { cardType, extractedItemsCategories, shortDescription } = useMemo(\n () => adaptUrlsExtractor(urls, t),\n [urls, t]\n );\n\n const getTranslatedCaption = (caption?: ExtractionCaptionType) => {\n if (!caption) return undefined;\n return t(EXTRACTION_CAPTION_KEYS[caption]);\n };\n\n const sections =\n extractedItemsCategories\n ?.filter((cat) => cat.items && cat.items.length > 0)\n .map((cat, i) => ({\n id: `extracted-items-${i}`,\n title: cat.title,\n testId: `urls-extracted-${i}`,\n caption: cat.extractionBox?.caption\n ? getTranslatedCaption(cat.extractionBox.caption as ExtractionCaptionType)\n : undefined,\n isCollapsible: true,\n content: <ExtractedCategoryContent category={cat} getTranslatedCaption={getTranslatedCaption} />,\n })) || [];\n\n return (\n <SignalCardNormal\n useInvestigateColors={useInvestigateColors}\n {...forwardedProps}\n ref={ref}\n className={classNames(CLASSNAME, className)}\n title=\"URLs\"\n type=\"URLS\"\n cardType={cardType}\n sections={sections}\n shortDescription={shortDescription}\n onHeightChange={onHeightChange}\n bannerVariant={bannerVariant}\n data-testid=\"signal-card-urls\"\n data-card-type={cardType}\n isCollapsible={true}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={handleCollapseAll}\n />\n );\n});\n\nSignalCardUrls.displayName = COMPONENT_NAME;\nSignalCardUrls.className = CLASSNAME;\n\n// Export helper functions for testing\nexport { SignalCardUrls as SignalCardUrlsBase };\n","import styled from 'styled-components';\nimport type { CardStatus } from '@redsift/signal-logic';\n// ============================================================================\n// All theming uses CSS variables with Design System fallbacks (Poppins).\n// When SignalCardThemeProvider sets useInvestigateColors=true,\n// these will be overridden with Investigate-specific fonts.\n// ============================================================================\n\n// Default fallback values - use DS CSS variables with hardcoded ultimate fallbacks\nconst DS_FONT_BODY = \"var(--redsift-typography-body-font-family, 'Poppins', sans-serif)\";\nconst DS_TEXT_COLOR = 'var(--redsift-color-neutral-x-dark-grey, #3B3A58)';\nconst DS_TEXT_SECONDARY = 'var(--redsift-color-neutral-dark-grey, #6E6D83)';\nconst DS_TEXT_HEADING = 'var(--redsift-color-neutral-x-dark-grey, #201F36)';\nconst DS_BORDER_LIGHT = 'var(--redsift-color-neutral-light-grey, #EAEAED)';\nconst DS_BG_HOVER = 'var(--redsift-color-neutral-xx-light-grey, #f8f9fc)';\nconst DS_BG_SELECTED = 'var(--redsift-color-neutral-x-light-grey, #F7F7F7)';\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: row;\n gap: 0;\n width: 100%;\n min-height: 400px;\n\n @media (max-width: 937px) {\n flex-direction: column;\n }\n`;\n\nexport const StyledSidebar = styled.aside`\n flex: 0 0 auto;\n width: 320px;\n border-right: 1px solid var(--sc-border-color-light, ${DS_BORDER_LIGHT});\n background: #ffffff;\n padding: 1.5rem 0 1.5rem 1.5rem;\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n overflow-y: auto;\n box-sizing: border-box;\n\n @media (max-width: 937px) {\n display: none;\n }\n`;\n\nexport const StyledMobileDropdownWrapper = styled.div`\n display: none;\n padding: 1rem 1.5rem;\n background: #ffffff;\n border-bottom: 1px solid var(--sc-border-color-light, ${DS_BORDER_LIGHT});\n\n @media (max-width: 937px) {\n display: block;\n }\n`;\n\nexport const StyledDropdownItemContent = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n width: 100%;\n padding: 0.75rem 0;\n`;\n\nexport const StyledDropdownItemMeta = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n min-width: 0;\n flex: 1;\n`;\n\nexport const StyledDropdownItemTitle = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n font-weight: 600;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n line-height: 1.5;\n`;\n\nexport const StyledDropdownItemDescription = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 13px;\n font-weight: 500;\n color: var(--sc-text-secondary, ${DS_TEXT_SECONDARY});\n line-height: 1.4;\n text-transform: capitalize;\n`;\n\nexport const StyledSection = styled.section`\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n`;\n\nexport const StyledSectionHeading = styled.h3`\n margin: 0;\n padding-right: 0.75rem;\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 16px;\n font-weight: 600;\n color: var(--sc-text-heading, ${DS_TEXT_HEADING});\n`;\n\nexport const StyledSignalList = styled.ul`\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n`;\n\ntype SignalListItemProps = {\n $selected: boolean;\n $status: CardStatus;\n};\n\nexport const StyledSignalListItem = styled.li<SignalListItemProps>`\n box-sizing: border-box;\n display: flex;\n gap: 0.75rem;\n align-items: flex-start;\n padding: 0.75rem 0.75rem;\n border-radius: 0;\n cursor: pointer;\n min-height: 72px;\n background: ${({ $selected }) => ($selected ? `var(--sc-bg-selected, ${DS_BG_SELECTED})` : '#ffffff')} !important;\n border: 1px solid transparent;\n border-left: none;\n border-right-width: 3px;\n border-right-style: solid;\n border-right-color: ${({ $selected }) => ($selected ? '#4285F4' : 'transparent')} !important;\n transition: background 0.2s ease, border-color 0.2s ease;\n position: relative;\n\n &:hover {\n background: ${({ $selected }) =>\n $selected ? `var(--sc-bg-selected, ${DS_BG_SELECTED})` : `var(--sc-bg-hover, ${DS_BG_HOVER})`} !important;\n }\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n height: 1px;\n background: rgba(216, 220, 231, 0.5);\n }\n\n &:last-child::after {\n display: none;\n }\n`;\n\nexport const StyledStatusIconWrapper = styled.span<{ $status: CardStatus }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: 1.5rem;\n height: 1.5rem;\n margin-right: 0.25rem;\n\n svg {\n display: block;\n font-size: 18px !important;\n width: 18px;\n height: 18px;\n }\n`;\n\nexport const StyledSignalMeta = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n min-width: 0;\n color: #1b1d1f;\n`;\n\nexport const StyledSignalTitle = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n font-weight: 600;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n line-height: 1.5;\n`;\n\nexport const StyledSignalDescription = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 13px;\n font-weight: 500;\n color: var(--sc-text-secondary, ${DS_TEXT_SECONDARY});\n line-height: 1.4;\n text-transform: capitalize;\n`;\n\nexport const StyledDetailsPane = styled.div`\n flex: 1 1 auto;\n min-width: 0;\n overflow-y: auto;\n`;\n\nexport const StyledCardContainer = styled.div`\n border: none;\n border-radius: 0;\n background: #ffffff;\n overflow: hidden;\n`;\n\nexport const StyledCardWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n`;\n\n// ============================================================================\n// Outer wrapper + header bar\n// ============================================================================\n\nconst DS_BG_CONTAINER = 'var(--redsift-color-neutral-xx-light-grey, #f4f4f6)';\n\nexport const StyledOuterWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 35px;\n padding: 32px 0;\n width: 100%;\n background: var(--sc-bg-container, ${DS_BG_CONTAINER});\n border-radius: 16px;\n\n @media (max-width: 937px) {\n padding: 16px 0;\n gap: 24px;\n }\n`;\n\nexport const StyledHeaderBar = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 48px;\n gap: 24px;\n\n @media (max-width: 937px) {\n flex-direction: column;\n align-items: flex-start;\n padding: 0 24px;\n gap: 16px;\n }\n`;\n\nexport const StyledHeaderLeft = styled.div`\n display: flex;\n align-items: center;\n gap: 24px;\n flex: 1;\n min-width: 0;\n\n @media (max-width: 937px) {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n width: 100%;\n }\n`;\n\nexport const StyledEmailInfo = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n`;\n\nexport const StyledEmailLabel = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 16px;\n font-weight: 400;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n line-height: 1.5;\n`;\n\nexport const StyledEmailAddress = styled.span`\n font-family: var(--sc-font-heading, \"var(--redsift-typography-heading-font-family, 'Space Grotesk', sans-serif)\");\n font-size: 26px;\n font-weight: 500;\n color: #000000;\n line-height: 1.3;\n word-break: break-all;\n\n @media (max-width: 937px) {\n font-size: 18px;\n }\n`;\n\nexport const StyledEmailMeta = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 4px;\n`;\n\nexport const StyledEmailMetaItem = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n font-weight: 400;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n line-height: 1.4;\n`;\n\nexport const StyledEmailMetaLabel = styled.span`\n font-weight: 500;\n`;\n\nexport const StyledHeaderRight = styled.div`\n flex-shrink: 0;\n`;\n\nexport const StyledBrandingSection = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 6px;\n`;\n\nexport const StyledPoweredByText = styled.span`\n font-family: var(--sc-font-body, ${DS_FONT_BODY});\n font-size: 14px;\n font-weight: 400;\n color: var(--sc-text-color, ${DS_TEXT_COLOR});\n line-height: 1.4;\n`;\n\nexport const StyledBrandingLogo = styled.img`\n display: block;\n height: 24px;\n width: auto;\n`;\n\nexport const StyledCheckAnotherButton = styled.button`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 24px;\n background: transparent;\n color: var(--sc-text-heading, ${DS_TEXT_HEADING});\n border: 2px solid var(--sc-text-heading, ${DS_TEXT_HEADING});\n border-radius: 8px;\n cursor: pointer;\n font-family: var(--sc-font-heading, \"var(--redsift-typography-heading-font-family, 'Space Grotesk', sans-serif)\");\n font-size: 18px;\n font-weight: 500;\n letter-spacing: 0.18px;\n line-height: 1.5;\n white-space: nowrap;\n transition: background 0.15s ease;\n\n &:hover {\n background: var(--sc-bg-hover, ${DS_BG_HOVER});\n }\n\n & > svg {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n }\n\n @media (max-width: 937px) {\n width: 100%;\n justify-content: center;\n font-size: 16px;\n padding: 8px 16px;\n }\n`;\n\nexport const StyledDivider = styled.hr`\n border: none;\n border-top: 1px solid var(--sc-border-divider, #e0e0e0);\n margin: 0 48px 24px;\n\n @media (max-width: 937px) {\n margin: 0 24px 24px;\n }\n`;\n","import React, { ComponentType, memo } from 'react';\nimport { Icon } from '@redsift/design-system';\nimport type { CardStatus } from '@redsift/signal-logic';\nimport { getCanonicalSignalType } from '@redsift/signal-logic';\nimport { SignalData } from './types';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport {\n SIGNAL_TYPES,\n BIMI_CHECKER_SIGNAL_TYPES,\n DOMAIN_ANALYZER_SIGNAL_TYPES,\n SIGNAL_CARD_POSITIONS,\n} from '@redsift/signal-logic';\nimport { STATUS_ICON_STYLES } from '@redsift/signal-logic';\nimport { SignalCardAmp } from '../SignalCardAmp';\nimport { SignalCardBimi } from '../SignalCardBimi';\nimport { SignalCardDkim } from '../SignalCardDkim';\nimport { SignalCardDkimDomainAnalyzer } from '../SignalCardDkimDomainAnalyzer';\nimport { SignalCardDmarc } from '../SignalCardDmarc';\nimport { SignalCardDmarcDomain } from '../SignalCardDmarcDomain';\nimport { SignalCardDnssec } from '../SignalCardDnssec';\nimport { SignalCardFcrdns } from '../SignalCardFcrdns';\nimport { SignalCardGoogleYahooCompliance } from '../SignalCardGoogleYahooCompliance';\nimport { SignalCardMtaSts } from '../SignalCardMtaSts';\nimport { SignalCardNormal } from '../SignalCardNormal';\nimport { SignalCardSpf } from '../SignalCardSpf';\nimport { SignalCardSpfDomain } from '../SignalCardSpfDomain';\nimport { SignalCardSpfDomainAnalyzer } from '../SignalCardSpfDomainAnalyzer';\nimport { SignalCardSubdo } from '../SignalCardSubdo';\nimport { SignalCardThreatInv } from '../SignalCardThreatInv';\nimport { SignalCardTls } from '../SignalCardTls';\nimport { SignalCardUrls } from '../SignalCardUrls';\nimport {\n StyledSection,\n StyledSectionHeading,\n StyledSignalList,\n StyledSignalListItem,\n StyledStatusIconWrapper,\n StyledSignalMeta,\n StyledSignalTitle,\n StyledSignalDescription,\n} from './styles';\n\n/**\n * Null component used when a card type is disabled.\n * Defined as a constant to avoid creating new function references on each render.\n */\nconst NullComponent: React.FC = () => null;\nNullComponent.displayName = 'NullComponent';\n\nexport const DEFAULT_CARD_ENABLED: Record<string, boolean> = {\n amp: true,\n bimi: true,\n dkim: true,\n dmarc: true,\n dnssec: true,\n emailProvider: false,\n fcrdns: true,\n mtaSts: true,\n spf: true,\n subdo: true,\n threatIntelligence: true,\n tls: true,\n urls: true,\n googleYahooCompliance: true,\n};\n\nconst SIGNAL_TYPE_FLAG_MAP: Record<string, keyof typeof DEFAULT_CARD_ENABLED> = {\n [SIGNAL_TYPES.SPF]: 'spf',\n [BIMI_CHECKER_SIGNAL_TYPES.SPF]: 'spf',\n [DOMAIN_ANALYZER_SIGNAL_TYPES.SPF]: 'spf',\n [SIGNAL_TYPES.SUBDO]: 'subdo',\n [DOMAIN_ANALYZER_SIGNAL_TYPES.SUBDO]: 'subdo',\n [SIGNAL_TYPES.TLS]: 'tls',\n [SIGNAL_TYPES.FCRDNS]: 'fcrdns',\n [SIGNAL_TYPES.DKIM]: 'dkim',\n [DOMAIN_ANALYZER_SIGNAL_TYPES.DKIM]: 'dkim',\n [SIGNAL_TYPES.DMARC]: 'dmarc',\n [BIMI_CHECKER_SIGNAL_TYPES.DMARC]: 'dmarc',\n [SIGNAL_TYPES.URLS]: 'urls',\n [SIGNAL_TYPES.THREATINV]: 'threatIntelligence',\n [DOMAIN_ANALYZER_SIGNAL_TYPES.THREATINV]: 'threatIntelligence',\n [SIGNAL_TYPES.BIMI]: 'bimi',\n [SIGNAL_TYPES.MTA_STS]: 'mtaSts',\n [SIGNAL_TYPES.DNSSEC]: 'dnssec',\n [SIGNAL_TYPES.AMP]: 'amp',\n [SIGNAL_TYPES.GOOGLE_YAHOO_COMPLIANCE]: 'googleYahooCompliance',\n};\n\nconst getCardFlagKey = (signalType: string): keyof typeof DEFAULT_CARD_ENABLED | undefined => {\n return SIGNAL_TYPE_FLAG_MAP[signalType];\n};\n\nexport const isSignalTypeEnabled = (signalType: string, isCardEnabledMap: Record<string, boolean>): boolean => {\n const flagKey = getCardFlagKey(signalType);\n if (!flagKey) return true;\n const flag = isCardEnabledMap[flagKey];\n return flag === undefined ? true : flag;\n};\n\nexport const SIGNAL_TITLE_MAP: Record<string, string> = {\n [SIGNAL_TYPES.DMARC]: 'DMARC',\n [SIGNAL_TYPES.SPF]: 'SPF',\n [SIGNAL_TYPES.DKIM]: 'DKIM',\n [SIGNAL_TYPES.SUBDO]: 'SPF Subdo Mailers',\n [SIGNAL_TYPES.TLS]: 'TLS',\n [SIGNAL_TYPES.FCRDNS]: 'FCrDNS',\n [SIGNAL_TYPES.URLS]: 'URLs',\n [SIGNAL_TYPES.THREATINV]: 'Threat Intelligence',\n [SIGNAL_TYPES.BIMI]: 'BIMI',\n [SIGNAL_TYPES.MTA_STS]: 'MTA-STS',\n [SIGNAL_TYPES.DNSSEC]: 'DNSSEC',\n [SIGNAL_TYPES.AMP]: 'AMP',\n [SIGNAL_TYPES.GOOGLE_YAHOO_COMPLIANCE]: 'Microsoft, Google and Yahoo Deliverability Compliance',\n // Domain Analyzer specific titles\n [DOMAIN_ANALYZER_SIGNAL_TYPES.DKIM]: 'DKIM Selector',\n [DOMAIN_ANALYZER_SIGNAL_TYPES.SUBDO]: 'No SubdoMailers Detected',\n};\n\nexport const getCardComponent = (signalType: string, isCardEnabledMap: Record<string, boolean>): ComponentType<any> => {\n switch (signalType) {\n case SIGNAL_TYPES.SPF:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardSpf;\n return NullComponent;\n case SIGNAL_TYPES.SUBDO:\n case DOMAIN_ANALYZER_SIGNAL_TYPES.SUBDO:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardSubdo;\n return NullComponent;\n case SIGNAL_TYPES.TLS:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardTls;\n return NullComponent;\n case SIGNAL_TYPES.FCRDNS:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardFcrdns;\n return NullComponent;\n case SIGNAL_TYPES.DKIM:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardDkim;\n return NullComponent;\n case SIGNAL_TYPES.DMARC:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardDmarc;\n return NullComponent;\n case SIGNAL_TYPES.URLS:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardUrls;\n return NullComponent;\n case SIGNAL_TYPES.THREATINV:\n case DOMAIN_ANALYZER_SIGNAL_TYPES.THREATINV:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardThreatInv;\n return NullComponent;\n case SIGNAL_TYPES.BIMI:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardBimi;\n return NullComponent;\n case SIGNAL_TYPES.MTA_STS:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardMtaSts;\n return NullComponent;\n case BIMI_CHECKER_SIGNAL_TYPES.SPF:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardSpfDomain;\n return NullComponent;\n case BIMI_CHECKER_SIGNAL_TYPES.DMARC:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardDmarcDomain;\n return NullComponent;\n case DOMAIN_ANALYZER_SIGNAL_TYPES.DKIM:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardDkimDomainAnalyzer;\n return NullComponent;\n case DOMAIN_ANALYZER_SIGNAL_TYPES.SPF:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardSpfDomainAnalyzer;\n return NullComponent;\n case SIGNAL_TYPES.DNSSEC:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardDnssec;\n return NullComponent;\n case SIGNAL_TYPES.AMP:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardAmp;\n return NullComponent;\n case SIGNAL_TYPES.GOOGLE_YAHOO_COMPLIANCE:\n if (isSignalTypeEnabled(signalType, isCardEnabledMap)) return SignalCardGoogleYahooCompliance;\n return NullComponent;\n default:\n return SignalCardNormal;\n }\n};\n\nexport const getSignalPosition = (signalType: string): number => {\n return SIGNAL_CARD_POSITIONS[signalType as keyof typeof SIGNAL_CARD_POSITIONS] ?? Number.MAX_SAFE_INTEGER;\n};\n\nexport const getStatusIcon = (status: CardStatus) => {\n const config = STATUS_ICON_STYLES[status] ?? STATUS_ICON_STYLES.unknown;\n const { icon, color } = config;\n return <Icon icon={icon} size=\"small\" color={color} />;\n};\n\n/**\n * Check if a signal has the required data to render its card.\n * Returns true if the card would render content, false if it would return null.\n */\nexport const hasRequiredData = (signal: SignalData): boolean => {\n const { signalType, jmap } = signal;\n const extsecrep = jmap?.extsecrep;\n\n // URLs card reads from investigate, not extsecrep\n if (signalType === SIGNAL_TYPES.URLS) {\n const investigate = signal.investigate;\n const urls =\n investigate != null && typeof investigate === 'object' && 'urls' in investigate\n ? (investigate as { urls: unknown }).urls\n : undefined;\n return Array.isArray(urls) && urls.length > 0;\n }\n\n if (!extsecrep) return false;\n\n switch (signalType) {\n case SIGNAL_TYPES.BIMI:\n // SignalCardBimi: if (!bimi) return null\n return !!extsecrep.bimi;\n\n case SIGNAL_TYPES.DNSSEC:\n // SignalCardDnssec: if (!dnsSecurity) return null\n return !!extsecrep.dnsSecurity;\n\n case SIGNAL_TYPES.MTA_STS:\n // SignalCardMtaSts: if (!mtaInfo) return null\n // Also checks for tlsRecord, mtaStsRecord, mtaStsPolicy, mtaStsCertificate in buildMtaStsState\n return !!extsecrep.mta;\n\n case SIGNAL_TYPES.SUBDO:\n case DOMAIN_ANALYZER_SIGNAL_TYPES.SUBDO:\n // SignalCardSubdo: if (!spf) return null\n return !!extsecrep.spf;\n\n case BIMI_CHECKER_SIGNAL_TYPES.SPF:\n // SignalCardSpfDomain: if (!spf) return null\n return !!extsecrep.spf;\n\n case SIGNAL_TYPES.AMP:\n // SignalCardAMP: checks spfAlignmentDomains.length\n // This is derived from dmarc data, so check for dmarc\n return !!extsecrep.dmarc;\n\n case SIGNAL_TYPES.GOOGLE_YAHOO_COMPLIANCE:\n // Require at least one compliance data point before rendering the card\n return Boolean(extsecrep.dmarc || extsecrep.spf || extsecrep.dkim || extsecrep.tls || extsecrep.unsubscribe);\n\n case SIGNAL_TYPES.THREATINV:\n case DOMAIN_ANALYZER_SIGNAL_TYPES.THREATINV:\n // SignalCardThreatInv: if (!tl) return null\n return !!extsecrep.tl;\n\n // Most other cards have data or use fallbacks, so return true\n // These include: DMARC, DKIM, SPF, TLS, FCrDNS\n // Domain analyzer variants: DmarcDomain, DkimDomainAnalyzer, SpfDomainAnalyzer\n default:\n return true;\n }\n};\n\nexport const getSignalTitle = (signalType: string): string => {\n // Check for direct match first (for Domain Analyzer specific titles)\n if (SIGNAL_TITLE_MAP[signalType]) {\n return SIGNAL_TITLE_MAP[signalType];\n }\n // Fall back to canonical type\n const canonicalType = getCanonicalSignalType(signalType);\n return SIGNAL_TITLE_MAP[canonicalType] ?? canonicalType.replace(/_/g, ' ');\n};\n\nexport const getStatusLabel = (\n status: CardStatus,\n translate: ReturnType<typeof useSignalCardTranslation>['t']\n): string => {\n switch (status) {\n case 'good':\n return translate('signal-card-list.status.good') as string;\n case 'warning':\n return translate('signal-card-list.status.warning') as string;\n case 'danger':\n return translate('signal-card-list.status.danger') as string;\n case 'info':\n return translate('signal-card-list.status.info') as string;\n default:\n return translate('signal-card-list.status.unknown') as string;\n }\n};\n\n// Re-export from utils for consumers\nexport { getCanonicalSignalType };\n\n/**\n * Signal summary data for rendering in the sidebar list.\n */\nexport type SignalSummary = {\n signal: SignalData;\n title: string;\n description: string;\n status: CardStatus;\n statusLabel: string;\n canonicalType: string;\n CardComponent: ComponentType<any>;\n};\n\n/**\n * Props for the SignalListSection component.\n */\nexport type SignalListSectionProps = {\n /** Heading text for the section */\n heading: string;\n /** Array of signal summaries to render */\n signals: SignalSummary[];\n /** Currently selected signal type */\n activeSignalType: string | null;\n /** Callback when a signal is selected */\n onSelect: (signalType: string) => void;\n /** Callback for keyboard navigation */\n onKeyDown: (event: React.KeyboardEvent<HTMLLIElement>, signalType: string) => void;\n};\n\n/**\n * Renders a section of signal cards in the sidebar list.\n * Used for both priority and remaining signal sections to eliminate duplicate JSX.\n *\n * @example\n * ```tsx\n * <SignalListSection\n * heading=\"Required Signals\"\n * signals={prioritySignals}\n * activeSignalType={activeSignalType}\n * onSelect={handleSelect}\n * onKeyDown={handleKeyDown}\n * />\n * ```\n */\nexport const SignalListSection = memo<SignalListSectionProps>(function SignalListSection({\n heading,\n signals,\n activeSignalType,\n onSelect,\n onKeyDown,\n}) {\n if (!signals.length) {\n return null;\n }\n\n return (\n <StyledSection>\n <StyledSectionHeading>{heading}</StyledSectionHeading>\n <StyledSignalList role=\"tablist\" aria-orientation=\"vertical\">\n {signals.map(({ signal, title, description, status }) => {\n const isSelected = signal.signalType === activeSignalType;\n\n return (\n <StyledSignalListItem\n key={signal.signalType}\n $selected={isSelected}\n $status={status}\n onClick={() => onSelect(signal.signalType)}\n role=\"tab\"\n tabIndex={isSelected ? 0 : -1}\n aria-selected={isSelected}\n onKeyDown={(event: React.KeyboardEvent<HTMLLIElement>) => onKeyDown(event, signal.signalType)}\n >\n <StyledStatusIconWrapper $status={status}>{getStatusIcon(status)}</StyledStatusIconWrapper>\n <StyledSignalMeta>\n <StyledSignalTitle>{title}</StyledSignalTitle>\n {description ? <StyledSignalDescription>{description}</StyledSignalDescription> : null}\n </StyledSignalMeta>\n </StyledSignalListItem>\n );\n })}\n </StyledSignalList>\n </StyledSection>\n );\n});\n","import React, { forwardRef, useCallback, useEffect, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { TextField } from '@redsift/design-system';\nimport type { Comp } from '@redsift/design-system';\nimport { Select, Item } from '@redsift/pickers';\nimport { mdiSync } from '@redsift/icons';\nimport { useSignalCardTranslation } from '../../hooks/useSignalCardTranslation';\nimport ondmarcLogoSvg from '../../assets/ondmarc-logo.svg';\nimport { useResolvedTheme, SignalCardThemeProvider } from '../../hooks/useSignalCardTheme';\nimport { getSignalStatus } from '@redsift/signal-logic';\nimport { DEFAULT_PRIORITY_SIGNAL_TYPES } from '@redsift/signal-logic';\nimport { SignalCardErrorBoundary } from '../../components/ErrorBoundary';\nimport { SignalCardListProps } from './types';\nimport { RecommendationsSummary } from './RecommendationsSummary';\nimport {\n DEFAULT_CARD_ENABLED,\n getCardComponent,\n getSignalPosition,\n getStatusIcon,\n getCanonicalSignalType,\n hasRequiredData,\n getSignalTitle,\n getStatusLabel,\n isSignalTypeEnabled,\n SignalListSection,\n} from './helpers';\nimport {\n StyledContainer,\n StyledSidebar,\n StyledMobileDropdownWrapper,\n StyledDropdownItemContent,\n StyledDropdownItemMeta,\n StyledDropdownItemTitle,\n StyledDropdownItemDescription,\n StyledStatusIconWrapper,\n StyledDetailsPane,\n StyledCardContainer,\n StyledCardWrapper,\n StyledOuterWrapper,\n StyledHeaderBar,\n StyledHeaderLeft,\n StyledEmailInfo,\n StyledEmailLabel,\n StyledEmailAddress,\n StyledEmailMeta,\n StyledEmailMetaItem,\n StyledEmailMetaLabel,\n StyledHeaderRight,\n StyledBrandingSection,\n StyledPoweredByText,\n StyledBrandingLogo,\n StyledCheckAnotherButton,\n StyledDivider,\n} from './styles';\n\nconst COMPONENT_NAME = 'SignalCardList';\nconst CLASSNAME = 'redsift-signal-card-list';\n\nexport const SignalCardList: Comp<SignalCardListProps, HTMLDivElement> = forwardRef<\n HTMLDivElement,\n SignalCardListProps\n>(function SignalCardList(\n {\n signals = [],\n error,\n isCardEnabledMap = DEFAULT_CARD_ENABLED,\n prioritySignalTypes = DEFAULT_PRIORITY_SIGNAL_TYPES,\n initialSelectedSignalType = null,\n onSelectSignalType,\n renderCardHeader,\n cardPromoHref,\n renderCardFooter,\n prioritySectionHeading,\n remainingSectionHeading,\n useInvestigateColors: useInvestigateColorsOverride,\n isCollapsible = true,\n areAllCollapsed,\n onCollapseAll,\n // Recommendations props\n recommendations,\n recommendationsLoading,\n showRecommendations = true,\n recommendationsCTA,\n onExpandSignalCard,\n // Header props\n onCheckAnotherEmail,\n renderHeaderAction,\n className,\n ...forwardedProps\n },\n ref\n) {\n const { t } = useSignalCardTranslation('investigate');\n const { useInvestigateColors } = useResolvedTheme(useInvestigateColorsOverride);\n const [activeSignalType, setActiveSignalType] = useState<string | null>(initialSelectedSignalType);\n\n const mergedIsCardEnabledMap = useMemo(() => {\n return { ...DEFAULT_CARD_ENABLED, ...isCardEnabledMap } as Record<string, boolean>;\n }, [isCardEnabledMap]);\n\n const sortedSignals = useMemo(() => {\n return [...signals].sort((a, b) => getSignalPosition(a.signalType) - getSignalPosition(b.signalType));\n }, [signals]);\n\n const summaries = useMemo(() => {\n return sortedSignals\n .filter((signal) => hasRequiredData(signal) && isSignalTypeEnabled(signal.signalType, mergedIsCardEnabledMap))\n .map((signal) => {\n const title = getSignalTitle(signal.signalType);\n const status = getSignalStatus({\n signalType: signal.signalType,\n signal,\n });\n const statusLabel = getStatusLabel(status, t);\n const canonicalType = getCanonicalSignalType(signal.signalType);\n const CardComponent = getCardComponent(signal.signalType, mergedIsCardEnabledMap);\n\n return {\n signal,\n title,\n description: statusLabel,\n status,\n statusLabel,\n canonicalType,\n CardComponent,\n };\n });\n }, [sortedSignals, t, mergedIsCardEnabledMap]);\n\n const canonicalPriority = useMemo(() => {\n return (prioritySignalTypes ?? DEFAULT_PRIORITY_SIGNAL_TYPES).map(getCanonicalSignalType);\n }, [prioritySignalTypes]);\n\n const prioritySignals = useMemo(() => {\n const orderedSignals: typeof summaries = [];\n const seenSignalTypes = new Set<string>();\n\n canonicalPriority.forEach((canonicalType: string) => {\n summaries.forEach((summary) => {\n if (summary.canonicalType === canonicalType && !seenSignalTypes.has(summary.signal.signalType)) {\n orderedSignals.push(summary);\n seenSignalTypes.add(summary.signal.signalType);\n }\n });\n });\n\n return orderedSignals;\n }, [summaries, canonicalPriority]);\n\n const prioritySignalTypeSet = useMemo(() => {\n return new Set(prioritySignals.map(({ signal }) => signal.signalType));\n }, [prioritySignals]);\n\n const remainingSignals = useMemo(() => {\n return summaries.filter(({ signal }) => !prioritySignalTypeSet.has(signal.signalType));\n }, [summaries, prioritySignalTypeSet]);\n\n const allSignalsForDropdown = useMemo(() => {\n return [...prioritySignals, ...remainingSignals];\n }, [prioritySignals, remainingSignals]);\n\n // Sync with external controlled selection\n useEffect(() => {\n if (initialSelectedSignalType !== null) {\n setActiveSignalType(initialSelectedSignalType);\n }\n }, [initialSelectedSignalType]);\n\n useEffect(() => {\n const availableTypes = allSignalsForDropdown.map(({ signal }) => signal.signalType);\n if (activeSignalType && availableTypes.includes(activeSignalType)) {\n return;\n }\n\n const defaultSignal = allSignalsForDropdown[0]?.signal ?? null;\n const nextType = defaultSignal?.signalType ?? null;\n\n if (nextType === activeSignalType) {\n return;\n }\n\n setActiveSignalType(nextType);\n if (nextType) {\n onSelectSignalType?.(nextType);\n }\n }, [allSignalsForDropdown, activeSignalType, onSelectSignalType]);\n\n const noopHeightChange = useCallback(() => {}, []);\n\n const handleSelect = useCallback(\n (signalType: string) => {\n // Only update if it's actually different\n if (activeSignalType !== signalType) {\n setActiveSignalType(signalType);\n onSelectSignalType?.(signalType);\n }\n },\n [activeSignalType, onSelectSignalType]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLLIElement>, signalType: string) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleSelect(signalType);\n } else if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n const currentIndex = allSignalsForDropdown.findIndex((s) => s.signal.signalType === signalType);\n if (currentIndex === -1) return;\n\n let nextIndex = currentIndex;\n if (event.key === 'ArrowDown') {\n nextIndex = (currentIndex + 1) % allSignalsForDropdown.length;\n } else {\n nextIndex = (currentIndex - 1 + allSignalsForDropdown.length) % allSignalsForDropdown.length;\n }\n\n const nextSignal = allSignalsForDropdown[nextIndex];\n handleSelect(nextSignal.signal.signalType);\n\n // Note: Ideally we should also move focus to the new item, but since we're changing selection\n // and re-rendering, we rely on the user to tab or the screen reader to announce the change.\n // For a robust implementation, we would need refs to all list items.\n }\n },\n [allSignalsForDropdown, handleSelect]\n );\n\n // Determine if recommendations section should render\n const shouldShowRecommendations = showRecommendations && (recommendations || recommendationsLoading);\n\n // Extract checked email, subject, and date from the first signal that has jmap.from.email\n const { checkedEmail, emailSubject, emailDate } = useMemo(() => {\n for (const signal of signals) {\n const email = (signal.jmap?.from as { email?: string } | undefined)?.email;\n if (email)\n return {\n checkedEmail: email,\n emailSubject: signal.jmap?.subject as string | undefined,\n emailDate: signal.jmap?.date as string | undefined,\n };\n }\n return { checkedEmail: undefined, emailSubject: undefined, emailDate: undefined };\n }, [signals]);\n\n if (error) {\n return (\n <div>\n <h2>{error.name}</h2>\n <h2>{error.message}</h2>\n <code>{error.stack}</code>\n </div>\n );\n }\n\n const showHeader = !!checkedEmail;\n\n return (\n <SignalCardThemeProvider theme={{ useInvestigateColors }}>\n {(showHeader || shouldShowRecommendations) && (\n <StyledOuterWrapper>\n {showHeader && (\n <>\n <StyledHeaderBar data-testid=\"signal-card-list-header\">\n <StyledHeaderLeft>\n <StyledEmailInfo>\n <StyledEmailLabel>{t('signal-card-list.checked-email-label')}</StyledEmailLabel>\n <StyledEmailAddress>{checkedEmail}</StyledEmailAddress>\n {(emailSubject || emailDate) && (\n <StyledEmailMeta>\n {emailSubject && (\n <StyledEmailMetaItem>\n <StyledEmailMetaLabel>{t('subject')}:</StyledEmailMetaLabel> {emailSubject}\n </StyledEmailMetaItem>\n )}\n {emailDate && (\n <StyledEmailMetaItem>\n <StyledEmailMetaLabel>{t('date')}:</StyledEmailMetaLabel>{' '}\n {new Date(emailDate).toLocaleString(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </StyledEmailMetaItem>\n )}\n </StyledEmailMeta>\n )}\n </StyledEmailInfo>\n {renderHeaderAction\n ? renderHeaderAction()\n : onCheckAnotherEmail && (\n <StyledCheckAnotherButton type=\"button\" onClick={onCheckAnotherEmail}>\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d={mdiSync} />\n </svg>\n {t('signal-card-list.check-another-email')}\n </StyledCheckAnotherButton>\n )}\n </StyledHeaderLeft>\n <StyledHeaderRight>\n <StyledBrandingSection>\n <StyledPoweredByText>{t('signal-card-list.powered-by')}</StyledPoweredByText>\n <StyledBrandingLogo src={ondmarcLogoSvg} alt=\"OnDMARC\" />\n </StyledBrandingSection>\n </StyledHeaderRight>\n </StyledHeaderBar>\n {shouldShowRecommendations && <StyledDivider />}\n </>\n )}\n {shouldShowRecommendations && (\n <RecommendationsSummary\n recommendations={recommendations}\n loading={recommendationsLoading}\n cta={recommendationsCTA}\n onExpandSignalCard={onExpandSignalCard}\n />\n )}\n </StyledOuterWrapper>\n )}\n <StyledContainer\n ref={ref as any}\n className={classNames(CLASSNAME, className)}\n {...forwardedProps}\n data-testid=\"signal-card-list\"\n >\n <StyledMobileDropdownWrapper>\n <Select value={activeSignalType || ''} onChange={handleSelect} width=\"trigger-width\" wrapperProps={{ width: '100%' }}>\n <Select.Trigger>\n {({ value }: { value?: string }) => {\n const summary = allSignalsForDropdown.find((s) => s.signal.signalType === value);\n return <TextField label=\"Select Signal\" value={summary?.title ?? ''} isReadOnly width=\"100%\" />;\n }}\n </Select.Trigger>\n <Select.Content>\n {allSignalsForDropdown.map(({ signal, title, status, statusLabel }) => (\n <Item key={signal.signalType} value={signal.signalType}>\n <StyledDropdownItemContent>\n <StyledStatusIconWrapper $status={status}>{getStatusIcon(status)}</StyledStatusIconWrapper>\n <StyledDropdownItemMeta>\n <StyledDropdownItemTitle>{title}</StyledDropdownItemTitle>\n <StyledDropdownItemDescription>{statusLabel}</StyledDropdownItemDescription>\n </StyledDropdownItemMeta>\n </StyledDropdownItemContent>\n </Item>\n ))}\n </Select.Content>\n </Select>\n </StyledMobileDropdownWrapper>\n\n <StyledSidebar>\n <SignalListSection\n heading={prioritySectionHeading ?? t('signal-card-list.required-signals')}\n signals={prioritySignals}\n activeSignalType={activeSignalType}\n onSelect={handleSelect}\n onKeyDown={handleKeyDown}\n />\n <SignalListSection\n heading={remainingSectionHeading ?? t('signal-card-list.remaining-signals')}\n signals={remainingSignals}\n activeSignalType={activeSignalType}\n onSelect={handleSelect}\n onKeyDown={handleKeyDown}\n />\n </StyledSidebar>\n\n <StyledDetailsPane role=\"tabpanel\">\n {summaries.map((summary) => {\n const { signal, CardComponent } = summary;\n const isSelected = signal.signalType === activeSignalType;\n if (!CardComponent) return null;\n\n // Strip consumer-provided descriptions so each card uses its own DS translations\n // (synced with @redsift/signal-logic). Without this, consumers like ondmarc pass\n // i18next values that override the DS translations via SignalCardNormal's ?? fallback,\n // which can result in empty \"Show more\" content when the consumer lacks translations.\n const {\n shortDescription: _short,\n longDescription: _long,\n introDescription: _intro,\n ...signalProps\n } = signal;\n\n return (\n <StyledCardWrapper key={signal.signalType} style={{ display: isSelected ? 'flex' : 'none' }}>\n <StyledCardContainer>\n <SignalCardErrorBoundary signalType={signal.signalType}>\n <CardComponent\n {...signalProps}\n domain={\n signal.jmap?.extsecrep?.dmarc?.fromDomain ?? signal.jmap?.extsecrep?.spf?.domain ?? undefined\n }\n onHeightChange={noopHeightChange}\n renderHeader={renderCardHeader ? () => renderCardHeader(signal) : undefined}\n promoHref={cardPromoHref}\n renderFooter={renderCardFooter ? () => renderCardFooter(signal) : undefined}\n useInvestigateColors={useInvestigateColors}\n isCollapsible={isCollapsible}\n areAllCollapsed={areAllCollapsed}\n onCollapseAll={onCollapseAll}\n />\n </SignalCardErrorBoundary>\n </StyledCardContainer>\n </StyledCardWrapper>\n );\n })}\n </StyledDetailsPane>\n </StyledContainer>\n </SignalCardThemeProvider>\n );\n});\n\nSignalCardList.className = CLASSNAME;\nSignalCardList.displayName = COMPONENT_NAME;\n","/* istanbul ignore file */\n/**\n * Signal Cards Components (@redsift/products)\n *\n * Email security signal visualization components for the Investigate tool.\n * Part of the Red Sift Design System Products package.\n *\n * @packageDocumentation\n * @module SignalCards\n *\n * @example\n * ```tsx\n * import { SignalCardList, SignalCardThemeProvider } from '@redsift/products';\n *\n * // Basic usage with SignalCardList\n * <SignalCardThemeProvider>\n * <SignalCardList signals={signals} />\n * </SignalCardThemeProvider>\n *\n * // Individual card usage\n * <SignalCardDmarc jmap={emailData.jmap} />\n * ```\n */\n\nimport { withSignalCardTheme } from './hooks/withSignalCardTheme';\nimport { SignalCardList as BaseSignalCardList } from './cards/SignalCardList';\nimport { SignalCardDmarc as BaseSignalCardDmarc } from './cards/SignalCardDmarc';\nimport { SignalCardSpf as BaseSignalCardSpf } from './cards/SignalCardSpf';\nimport { SignalCardDkim as BaseSignalCardDkim } from './cards/SignalCardDkim';\nimport { SignalCardFcrdns as BaseSignalCardFcrdns } from './cards/SignalCardFcrdns';\nimport { SignalCardTls as BaseSignalCardTls } from './cards/SignalCardTls';\nimport { SignalCardDmarcDomain as BaseSignalCardDmarcDomain } from './cards/SignalCardDmarcDomain';\nimport { SignalCardSpfDomain as BaseSignalCardSpfDomain } from './cards/SignalCardSpfDomain';\nimport { SignalCardSpfDomainAnalyzer as BaseSignalCardSpfDomainAnalyzer } from './cards/SignalCardSpfDomainAnalyzer';\nimport { SignalCardDkimDomainAnalyzer as BaseSignalCardDkimDomainAnalyzer } from './cards/SignalCardDkimDomainAnalyzer';\nimport { SignalCardBimi as BaseSignalCardBimi } from './cards/SignalCardBimi';\nimport { SignalCardMtaSts as BaseSignalCardMtaSts } from './cards/SignalCardMtaSts';\nimport { SignalCardSubdo as BaseSignalCardSubdo } from './cards/SignalCardSubdo';\nimport { SignalCardThreatInv as BaseSignalCardThreatInv } from './cards/SignalCardThreatInv';\nimport { SignalCardDnssec as BaseSignalCardDnssec } from './cards/SignalCardDnssec';\nimport { SignalCardAmp as BaseSignalCardAmp } from './cards/SignalCardAmp';\nimport { SignalCardUrls as BaseSignalCardUrls } from './cards/SignalCardUrls';\nimport { SignalCardGoogleYahooCompliance as BaseSignalCardGoogleYahooCompliance } from './cards/SignalCardGoogleYahooCompliance';\n\nconst SignalCardList = withSignalCardTheme(BaseSignalCardList);\nconst SignalCardDmarc = withSignalCardTheme(BaseSignalCardDmarc);\nconst SignalCardSpf = withSignalCardTheme(BaseSignalCardSpf);\nconst SignalCardDkim = withSignalCardTheme(BaseSignalCardDkim);\nconst SignalCardFcrdns = withSignalCardTheme(BaseSignalCardFcrdns);\nconst SignalCardTls = withSignalCardTheme(BaseSignalCardTls);\nconst SignalCardDmarcDomain = withSignalCardTheme(BaseSignalCardDmarcDomain);\nconst SignalCardSpfDomain = withSignalCardTheme(BaseSignalCardSpfDomain);\nconst SignalCardSpfDomainAnalyzer = withSignalCardTheme(BaseSignalCardSpfDomainAnalyzer);\nconst SignalCardDkimDomainAnalyzer = withSignalCardTheme(BaseSignalCardDkimDomainAnalyzer);\nconst SignalCardBimi = withSignalCardTheme(BaseSignalCardBimi);\nconst SignalCardMtaSts = withSignalCardTheme(BaseSignalCardMtaSts);\nconst SignalCardSubdo = withSignalCardTheme(BaseSignalCardSubdo);\nconst SignalCardThreatInv = withSignalCardTheme(BaseSignalCardThreatInv);\nconst SignalCardDnssec = withSignalCardTheme(BaseSignalCardDnssec);\nconst SignalCardAmp = withSignalCardTheme(BaseSignalCardAmp);\nconst SignalCardUrls = withSignalCardTheme(BaseSignalCardUrls);\nconst SignalCardGoogleYahooCompliance = withSignalCardTheme(BaseSignalCardGoogleYahooCompliance);\n\n// ============================================================================\n// MAIN COMPONENTS\n// ============================================================================\n\n/**\n * Main signal card list component with sidebar navigation.\n * Displays multiple signal cards in a sidebar/detail layout.\n *\n * @see {@link SignalCardListProps} for configuration options\n */\nexport { SignalCardList };\nexport type { SignalCardListProps, SignalData } from './cards/SignalCardList';\nexport type { RecommendationsData, RecommendationsAnalysis, RecommendationSignal } from './types/recommendations';\n\n// ============================================================================\n// INDIVIDUAL SIGNAL CARD COMPONENTS\n// ============================================================================\n// These can be used standalone for domain analyzer or storybook integration\n\n/**\n * DMARC signal card - displays DMARC authentication results and policy analysis.\n * Shows alignment status, policy enforcement, and reporting configuration.\n */\nexport { SignalCardDmarc };\nexport type { SignalCardDmarcProps } from './cards/SignalCardDmarc';\n\n/**\n * SPF signal card - displays SPF authentication results.\n * Shows DNS lookup count, mechanism evaluation, and pass/fail status.\n */\nexport { SignalCardSpf };\nexport type { SignalCardSpfProps } from './cards/SignalCardSpf';\n\n/**\n * DKIM signal card - displays DKIM signature verification results.\n * Shows signing domain, selector, key info, and canonicalization details.\n */\nexport { SignalCardDkim };\nexport type { SignalCardDkimProps } from './cards/SignalCardDkim';\n\n/**\n * FCrDNS signal card - displays Forward-Confirmed Reverse DNS results.\n * Visualizes sender IP, PTR records, and EHLO verification with Sankey diagrams.\n */\nexport { SignalCardFcrdns };\nexport type { SignalCardFcrdnsProps } from './cards/SignalCardFcrdns';\n\n/**\n * TLS signal card - displays TLS encryption status.\n * Shows SSL/TLS version, cipher suite, and certificate information.\n */\nexport { SignalCardTls };\nexport type { SignalCardTlsProps } from './cards/SignalCardTls';\n\n/**\n * DMARC Domain card - domain analyzer variant for DMARC analysis.\n */\nexport { SignalCardDmarcDomain };\nexport type { SignalCardDmarcDomainProps } from './cards/SignalCardDmarcDomain';\n\n/**\n * SPF Domain card - domain analyzer variant for SPF record analysis.\n */\nexport { SignalCardSpfDomain };\nexport type { SignalCardSpfDomainProps } from './cards/SignalCardSpfDomain';\n\n/**\n * SPF Domain Analyzer card - specialized for domain-only SPF analysis.\n */\nexport { SignalCardSpfDomainAnalyzer };\nexport type { SignalCardSpfDomainAnalyzerProps } from './cards/SignalCardSpfDomainAnalyzer';\n\n/**\n * DKIM Domain Analyzer card - specialized for domain-only DKIM analysis.\n */\nexport { SignalCardDkimDomainAnalyzer };\nexport type { SignalCardDkimDomainAnalyzerProps } from './cards/SignalCardDkimDomainAnalyzer';\n\n/**\n * BIMI signal card - displays Brand Indicators for Message Identification status.\n * Shows SVG logo, VMC/CMC certificate validation, and BIMI record analysis.\n */\nexport { SignalCardBimi };\nexport type { SignalCardBimiProps } from './cards/SignalCardBimi';\n\n/**\n * MTA-STS signal card - displays Mail Transfer Agent Strict Transport Security status.\n * Shows policy mode, MX hosts, and max-age configuration.\n */\nexport { SignalCardMtaSts };\nexport type { SignalCardMtaStsProps } from './cards/SignalCardMtaSts';\n\n/**\n * Subdo signal card - displays subdomain analysis results.\n */\nexport { SignalCardSubdo };\nexport type { SignalCardSubdoProps } from './cards/SignalCardSubdo';\n\n/**\n * ThreatInv signal card - displays threat intelligence analysis.\n */\nexport { SignalCardThreatInv };\nexport type { SignalCardThreatInvProps } from './cards/SignalCardThreatInv';\n\n/**\n * DNSSEC signal card - displays DNS Security Extensions status.\n */\nexport { SignalCardDnssec };\nexport type { SignalCardDnssecProps } from './cards/SignalCardDnssec';\n\n/**\n * AMP signal card - displays Accelerated Mobile Pages email analysis.\n */\nexport { SignalCardAmp };\nexport type { SignalCardAmpProps } from './cards/SignalCardAmp';\n\n/**\n * URLs signal card - displays URL safety analysis from email content.\n */\nexport { SignalCardUrls };\nexport type { SignalCardUrlsProps } from './cards/SignalCardUrls';\n\n/**\n * Google/Yahoo Compliance signal card - displays bulk sender compliance status.\n */\nexport { SignalCardGoogleYahooCompliance };\nexport type { SignalCardGoogleYahooComplianceProps } from './cards/SignalCardGoogleYahooCompliance';\n\n// ============================================================================\n// SIGNAL TYPES & CONSTANTS\n// ============================================================================\n\n/**\n * Signal type constants organized by data source.\n *\n * - `SIGNAL_TYPES` - All available signal types\n * - `PUBLIC_INVESTIGATE_SIGNAL_TYPES` - Signals from email analysis\n * - `BIMI_CHECKER_SIGNAL_TYPES` - Signals from BIMI checker tool\n * - `DOMAIN_ANALYZER_SIGNAL_TYPES` - Signals from domain analyzer tool\n */\nexport {\n SIGNAL_TYPES,\n PUBLIC_INVESTIGATE_SIGNAL_TYPES,\n BIMI_CHECKER_SIGNAL_TYPES,\n DOMAIN_ANALYZER_SIGNAL_TYPES,\n type SignalType,\n type PublicInvestigateSignalType,\n type BimiCheckerSignalType,\n type DomainAnalyzerSignalType,\n} from '@redsift/signal-logic';\n\n/**\n * Card status constant — canonical status values (good, warning, danger, info, unknown).\n * For status utility functions (normalizeStatus, getStatusColor, etc.),\n * import directly from '@redsift/signal-logic'.\n */\nexport { CARD_STATUS } from '@redsift/signal-logic';\n\n// ============================================================================\n// THEME CONTEXT\n// ============================================================================\n\n/**\n * Theme context for configuring signal card appearance.\n * Wrap your app to provide consistent theming across all signal cards.\n *\n * @example\n * ```tsx\n * <SignalCardThemeProvider useInvestigateColors>\n * <SignalCardList signals={signals} />\n * </SignalCardThemeProvider>\n * ```\n */\nexport {\n SignalCardThemeProvider,\n useSignalCardTheme,\n useResolvedTheme,\n type SignalCardTheme,\n type SignalCardThemeProviderProps,\n} from './hooks';\n\n// ============================================================================\n// UI COMPONENTS\n// ============================================================================\n\n/**\n * Checklist item type for signal card internal checklist displays.\n */\nexport type { ChecklistItem } from './components/ui/Checklist/Checklist';\n\n// ============================================================================\n// GLOSSARY COMPONENTS\n// ============================================================================\n\n/**\n * Glossary term components for displaying email security terminology\n * with consistent styling and tooltips.\n *\n * @example\n * ```tsx\n * <From /> // Renders styled \"From\" glossary term\n * <GlossaryTerm label=\"Custom Term\" colorName=\"blue\" />\n * ```\n */\nexport * from './components/glossary/glossary';\n\n// ============================================================================\n// UTILITY FUNCTIONS\n// ============================================================================\n\n/**\n * Get the status (good/warning/danger) for a signal based on its data.\n * Used for determining card colors and icons.\n */\nexport { getSignalStatus } from '@redsift/signal-logic';\n\n// ============================================================================\n// INTERNAL NOTES\n// ============================================================================\n// Other signal card components, hooks, and internal utilities are not exported\n// as they are implementation details used internally by SignalCardList\n"],"names":["ErrorContainer","styled","div","ErrorTitle","h4","ErrorMessage","p","SignalCardErrorBoundary","Component","constructor","props","state","hasError","error","getDerivedStateFromError","componentDidUpdate","prevProps","resetKey","setState","componentDidCatch","errorInfo","signalType","onError","signalCardsLogger","componentStack","render","children","fallback","React","createElement","role","toUpperCase","message","CORE_PROTOCOLS","PROTOCOL_LABEL_KEYS","dmarc","spf","dkim","tls","fcrdns","mta_sts","bimi","dnssec","urls","threat_intelligence","amp","subdo","google_yahoo_compliance","ANALYSIS_KEYS","STATUS_COLORS","danger","warning","good","not_configured","info","unknown","shimmer","keyframes","spin","BREAKPOINT_MOBILE","BREAKPOINT_STACK","Container","ContentLayout","AnalysisColumn","AnalysisCard","AnalysisCardInner","AnalysisHeader","AnalysisTitle","AIBadge","span","BulletList","ul","BulletItem","li","Bullet","BulletText","CTASlot","CTATextContent","CTATitle","CTADescription","CTAButtonWrapper","CTAButton","button","StatusColumn","StatusCard","_ref","$status","StatusHeader","StatusIconWrapper","_ref2","StatusLabel","StatusContent","StatusMessage","DetailsLink","SkeletonContainer","SkeletonLoadingHeader","SkeletonSpinner","SkeletonLoadingText","SkeletonRow","SkeletonBullet","SkeletonLine","_ref3","$width","SkeletonStatusCard","SkeletonStatusLabel","SkeletonStatusMessage","DangerIcon","width","height","viewBox","fill","xmlns","d","stroke","strokeWidth","strokeLinecap","WarningIcon","strokeLinejoin","GoodIcon","InfoIcon","UnknownIcon","ErrorIcon","NotConfiguredIcon","strokeDasharray","getStatusIcon","status","LoadingSkeleton","t","useSignalCardTranslation","src","aiBadgeSvg","alt","map","w","key","protocol","RecommendationsSummary","recommendations","loading","cta","onExpandSignalCard","analysis","signals","analysisItems","text","filter","length","title","description","type","onClick","onClickCTA","buttonLabel","signalData","protocolLabel","summary","COMPONENT_NAME","CLASSNAME","SignalCardAmp","forwardRef","ref","className","onHeightChange","jmap","bannerVariant","renderFooter","useInvestigateColors","isCollapsible","areAllCollapsed","onCollapseAll","forwardedProps","_objectWithoutProperties","_excluded","extsecrep","resolvedAreAllCollapsed","handleCollapseAll","resolvedIsCollapsible","useCollapseController","extData","useMemo","adaptAmpExtractor","getTranslatedCaption","caption","undefined","EXTRACTION_CAPTION_KEYS","sections","infoItemsCategories","extractedItemsCategories","cat","items","i","_cat$extractionBox","id","testId","extractionBox","content","ExtractedCategoryContent","category","Checklist","cardType","SignalCardNormal","_extends","classNames","shortDescription","longDescription","displayName","SignalCardDkim","areAllCollapsedProp","onCollapseAllProp","rest","internalCollapsed","setInternalCollapsed","useState","useCallback","collapsed","computeInitialState","_parsedResults$initia","_initialResult$cardTy","_initialResult$infoIt","_initialResult$infoIt2","_initialResult$extrac","parsedResults","initialIndex","addResult","entry","idx","_entry$signature$sign","_entry$signature","parsed","adaptDkimExtractor","signerDomain","signature","push","_objectSpread","dkimDomain","Array","isArray","forEach","resultOptions","result","label","initialResult","dkimResults","resultSelected","infoItems","infoItemsCategoriesDkim","useEffect","onResultsChange","selected","prev","setTimeout","sectionIds","s","optionsLabel","customSectionOrder","STATUS","Object","freeze","PASS","WARNING","FAIL","ERROR","INFO","SelectorSection","NoSelectorsContainer","getCardType","record","_record$issues","_record$key","_record$records","_record$keyStatus$key","_record$keyStatus","statuses","issues","issue","Boolean","keyType","k","records","hasFail","includes","hasWarning","keyStatus","keySize","DKIM_KEY","VALID_LENGTH","getStatusType","buildNoSelectorContent","returnObjects","lines","line","trim","parseGlossaryMarkdown","SelectorDropdown","currentRecord","selectedRecordIndex","cardTypesSummary","onSelectChange","_currentRecord$select","Flexbox","alignItems","gap","selector","TooltipInPortalWrapper","count","Icon","icon","mdiCheck","color","size","mdiAlert","mdiClose","COLOR","main","red","Select","value","String","onChange","Number","Trigger","_record$entry$split$","_record$entry","_record$entry$split","displayText","split","TextField","isReadOnly","Content","_ref4","_record$entry$split$2","_record$entry2","_record$entry2$split","Item","SignalCardDkimDomainAnalyzer","_adapterResult$select","_currentSelectorData$","_currentSelectorData$2","namespaces","useMultiNamespaceTranslation","adapterResult","_domain","adaptDomainAnalyzerDkimExtractor","domain","_record$selector","replace","setSelectedRecordIndex","recordCount","maxIndex","_records$selectedReco","currentCardType","reduce","acc","_acc$status","mdiEmail","white","introDescription","currentSelectorData","selectorResults","catIdx","_cat$items","item","cname","withArrow","splice","margin","mdiArrowDownBold","inline","SAND","getEmailComplianceState","alignDkim","alignSpf","policy","_dmarc$policy","_dmarc$policy$rua","_dmarc$raw","hasRua","rua","test","raw","getDomainPolicyState","sp","pct","isSpWeak","EMAIL_STATUS","pass","none","permerror","temperror","DOMAIN_STATUS","ICON_FOR_STATUS","ICON_COLOR_FOR_STATUS","StyledRow","StyledBox","StyledTitleRow","StyledIconWrapper","StyledTitle","FONT","TYPE","HEADING","StyledBody","TEXT","SummaryBox","body","TRANSLATABLE_REPORT_MESSAGES","Set","getTranslatableReportWarnings","report","r","has","hasReportWarnings","isInheritedPolicy","policyDomain","fromDomain","orgDomain","DmarcSummaryBoxes","_dmarc$policy$pct","_dmarc$policy2","_dmarc$policy3","_dmarc$policy3$rua","_dmarc$raw2","_dmarc$policyDomain$r","_dmarc$policyDomain","isDomainAnalyzer","domainState","emailState","reportWarnings","inherited","getDomainBody","warnings","params","join","prefix","getEmailBody","SignalCardDmarc","renderHeader","promoHref","adaptDmarcExtractor","effectiveRenderHeader","bannerContent","DmarcPromoBanner","href","Fragment","SignalCardDnssec","_jmap$extsecrep","dnsSecurity","adaptDnssecExtractor","SignalCardFcrdns","_investigate$fcrdns","_investigate$ehloChec","investigate","ehloCheck","ehlo","adaptFcrdnsExtractor","DS_FONT_BODY","DS_TEXT_COLOR","DS_WARNING_COLOR","StyledIntroWrapper","StyledWarningMessage","extractData","tRoot","data","extractGoogleYahooComplianceData","spfStatus","dkimStatus","spfAlignStatus","dkimAlignStatus","spfPolicy","dkimPolicy","dmarcStatus","dmarcPolicy","senderIpStatus","ehloStatus","senderIpMatchesEhloARecordStatus","tlsStatus","tlsVersion","oneClickUnsubStatus","Link","target","spfDkimCategory","statusToTranslationKey","alignmentCategory","dmarcCategory","fcrdnsCategory","reputationCategory","tlsCategory","version","oneClickUnsubCategory","defaultValue","SignalCardGoogleYahooCompliance","index","i18nRoot","SignalCardMtaSts","mtaInfo","mta","adaptMtaStsExtractor","infoTlsRpt","extractedTlsRptCategories","infoMtaSts","extractedMtaStsCategories","infoPolicy","extractedItemsPolicy","infoCertificate","SignalCardSpf","restProps","spfCheckerLink","buildSPFCheckerLink","ctaButtonName","onCTAButtonClick","window","open","spfPassResult","getSpfPassResult","spfResults","spfTypes","identity","availableIdentities","adaptSpfExtractor","Ehlo","ReturnPath","firstResult","nextResult","Label","_resultOptions$","SignalCardSpfDomainAnalyzer","ctaLink","adaptDomainAnalyzerSpfExtractor","setAreAllCollapsed","SignalCard","SignalCardSubdo","adaptSubdoExtractor","CARD_STATUS","GOOD","DANGER","SignalCardThreatInv","from","sanitizedFrom","_from$name","_from$email","name","email","adaptThreatIntelligenceExtractor","tl","SignalCardTls","divProps","adaptTlsExtractor","SignalCardUrls","_investigate$urls","adaptUrlsExtractor","DS_TEXT_SECONDARY","DS_TEXT_HEADING","DS_BORDER_LIGHT","DS_BG_HOVER","DS_BG_SELECTED","StyledContainer","StyledSidebar","aside","StyledMobileDropdownWrapper","StyledDropdownItemContent","StyledDropdownItemMeta","StyledDropdownItemTitle","StyledDropdownItemDescription","StyledSection","section","StyledSectionHeading","h3","StyledSignalList","StyledSignalListItem","$selected","StyledStatusIconWrapper","StyledSignalMeta","StyledSignalTitle","StyledSignalDescription","StyledDetailsPane","StyledCardContainer","StyledCardWrapper","DS_BG_CONTAINER","StyledOuterWrapper","StyledHeaderBar","StyledHeaderLeft","StyledEmailInfo","StyledEmailLabel","StyledEmailAddress","StyledEmailMeta","StyledEmailMetaItem","StyledEmailMetaLabel","StyledHeaderRight","StyledBrandingSection","StyledPoweredByText","StyledBrandingLogo","img","StyledCheckAnotherButton","StyledDivider","hr","NullComponent","DEFAULT_CARD_ENABLED","emailProvider","mtaSts","threatIntelligence","googleYahooCompliance","SIGNAL_TYPE_FLAG_MAP","SIGNAL_TYPES","SPF","BIMI_CHECKER_SIGNAL_TYPES","DOMAIN_ANALYZER_SIGNAL_TYPES","SUBDO","TLS","FCRDNS","DKIM","DMARC","URLS","THREATINV","BIMI","MTA_STS","DNSSEC","AMP","GOOGLE_YAHOO_COMPLIANCE","getCardFlagKey","isSignalTypeEnabled","isCardEnabledMap","flagKey","flag","SIGNAL_TITLE_MAP","getCardComponent","SignalCardBimi","SignalCardSpfDomain","SignalCardDmarcDomain","getSignalPosition","_SIGNAL_CARD_POSITION","SIGNAL_CARD_POSITIONS","MAX_SAFE_INTEGER","_STATUS_ICON_STYLES$s","config","STATUS_ICON_STYLES","hasRequiredData","signal","unsubscribe","getSignalTitle","_SIGNAL_TITLE_MAP$can","canonicalType","getCanonicalSignalType","getStatusLabel","translate","SignalListSection","memo","heading","activeSignalType","onSelect","onKeyDown","isSelected","tabIndex","event","SignalCardList","prioritySignalTypes","DEFAULT_PRIORITY_SIGNAL_TYPES","initialSelectedSignalType","onSelectSignalType","renderCardHeader","cardPromoHref","renderCardFooter","prioritySectionHeading","remainingSectionHeading","useInvestigateColorsOverride","recommendationsLoading","showRecommendations","recommendationsCTA","onCheckAnotherEmail","renderHeaderAction","useResolvedTheme","setActiveSignalType","mergedIsCardEnabledMap","sortedSignals","sort","a","b","summaries","getSignalStatus","statusLabel","CardComponent","canonicalPriority","prioritySignals","orderedSignals","seenSignalTypes","add","prioritySignalTypeSet","remainingSignals","allSignalsForDropdown","_allSignalsForDropdow","_allSignalsForDropdow2","_defaultSignal$signal","availableTypes","defaultSignal","nextType","noopHeightChange","handleSelect","handleKeyDown","preventDefault","currentIndex","findIndex","nextIndex","nextSignal","shouldShowRecommendations","checkedEmail","emailSubject","emailDate","_signal$jmap","_signal$jmap$from","_signal$jmap2","_signal$jmap3","subject","date","stack","showHeader","SignalCardThemeProvider","theme","Date","toLocaleString","year","month","day","hour","minute","mdiSync","ondmarcLogoSvg","wrapperProps","_ref5","_summary$title","find","_ref6","_ref7","_signal$jmap$extsecre","_signal$jmap4","_signal$jmap4$extsecr","_signal$jmap4$extsecr2","_signal$jmap5","_signal$jmap5$extsecr","_signal$jmap5$extsecr2","signalProps","_excluded2","style","display","withSignalCardTheme","BaseSignalCardList","BaseSignalCardDmarc","BaseSignalCardSpf","BaseSignalCardDkim","BaseSignalCardFcrdns","BaseSignalCardTls","BaseSignalCardDmarcDomain","BaseSignalCardSpfDomain","BaseSignalCardSpfDomainAnalyzer","BaseSignalCardDkimDomainAnalyzer","BaseSignalCardBimi","BaseSignalCardMtaSts","BaseSignalCardSubdo","BaseSignalCardThreatInv","BaseSignalCardDnssec","BaseSignalCardAmp","BaseSignalCardUrls","BaseSignalCardGoogleYahooCompliance"],"mappings":"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;AAEM,MAAM+D,iBAAiB,GAAGhE,MAAM,CAACC,GAAI,CAAA;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAA,EAAuByD,iBAAkB,CAAA;AACzC;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMO,cAAc,GAAGjE,MAAM,CAACC,GAAI,CAAA;AACzC;AACA;AACA;AACA;AACA;AACA,qBAAA,EAAuByD,iBAAkB,CAAA;AACzC;AACA;AACA,CAAC,CAAA;AAEM,MAAMQ,aAAa,GAAGlE,MAAM,CAACC,GAAI,CAAA;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMkE,OAAO,GAAGnE,MAAM,CAACoE,IAAK,CAAA;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMC,UAAU,GAAGrE,MAAM,CAACsE,EAAG,CAAA;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAA,EAAuBZ,iBAAkB,CAAA;AACzC;AACA;AACA,CAAC,CAAA;AAEM,MAAMa,UAAU,GAAGvE,MAAM,CAACwE,EAAG,CAAA;AACpC;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMC,MAAM,GAAGzE,MAAM,CAACoE,IAAK,CAAA;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMM,UAAU,GAAG1E,MAAM,CAACoE,IAAK,CAAA;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAA,EAAuBV,iBAAkB,CAAA;AACzC;AACA;AACA,CAAC,CAAA;AAEM,MAAMiB,OAAO,GAAG3E,MAAM,CAACC,GAAI,CAAA;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAA,EAAuByD,iBAAkB,CAAA;AACzC;AACA;AACA;AACA,CAAC,CAAA;AAEM,MAAMkB,cAAc,GAAG5E,MAAM,CAACC,GAAI,CAAA;AACzC;AACA;AACA;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"}