@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,4 +1,4 @@
1
- import { az as withSignalCardTheme, ay as SignalCardBimi$1, aw as SignalCardDmarcDomain$1, ax as SignalCardSpfDomain$1 } from './SignalCardSpfDomain.js';
1
+ import { aA as withSignalCardTheme, az as SignalCardBimi$1, ax as SignalCardDmarcDomain$1, ay as SignalCardSpfDomain$1 } from './SignalCardSpfDomain.js';
2
2
  export { S as SignalCardThemeProvider, a as useResolvedTheme, u as useSignalCardTheme } from './SignalCardSpfDomain.js';
3
3
  export { BIMI_CHECKER_SIGNAL_TYPES, CARD_STATUS, SIGNAL_TYPES, STATUS_COLORS, STATUS_ICONS, STATUS_ICON_STYLES, getStatusColor, getStatusIcon, getStatusIconStyle, isCardStatus, isFailureStatus, isSuccessStatus, isWarningStatus, mapStatusToDetailedCardColor, normalizeStatus } from '@redsift/signal-logic';
4
4
 
@@ -1,5 +1,5 @@
1
- import { a6 as signalCardsLogger, a7 as useSignalCardTranslation, a8 as useCollapseController, a9 as adaptAmpExtractor, aa as ExtractedCategoryContent, ab as Checklist, ac as SignalCardNormal, ad as EXTRACTION_CAPTION_KEYS, ae as adaptDkimExtractor, af as useMultiNamespaceTranslation, ag as adaptDomainAnalyzerDkimExtractor, ah as COLOR, ai as parseGlossaryMarkdown, aj as TooltipInPortalWrapper, ak as FONT, al as adaptDmarcExtractor, am as DmarcPromoBanner, an as adaptDnssecExtractor, ao as adaptFcrdnsExtractor, ap as adaptMtaStsExtractor, aq as adaptSpfExtractor, E as Ehlo, R as ReturnPath, ar as adaptDomainAnalyzerSpfExtractor, as as adaptSubdoExtractor, at as adaptThreatIntelligenceExtractor, au as adaptTlsExtractor, av as adaptUrlsExtractor, aw as SignalCardDmarcDomain$1, ax as SignalCardSpfDomain$1, ay as SignalCardBimi$1, a as useResolvedTheme, S as SignalCardThemeProvider, az as withSignalCardTheme } from './SignalCardSpfDomain.js';
2
- export { A as ARecord, O as ATAG, I as BimiRecord, M as CMC, i as Canonicalization, H as CipherSuite, C as CnameRecord, D as Dkim, m as DkimAlgorithm, w as DkimAlignment, h as DkimSelector, k as DkimSignature, s as DkimSigningDomain, Q as Dmarc, J as DmarcCompliant, n as DmarcPolicy, E as Ehlo, F as From, a5 as GLOSSARY_ICON_MAP, G as GlossaryTerm, N as ITAG, K as KeyLength, $ as MaxAge, Z as Mode, a0 as MtaStsCertificate, a2 as MtaStsCertificateCnameName, a4 as MtaStsCertificateCnameType, a3 as MtaStsCertificateCnameValue, a1 as MtaStsCertificateExpiry, X as MtaStsPolicyFile, W as MtaStsRecord, _ as Mx, o as Pct, P as PtrRecord, R as ReturnPath, q as Rua, r as Ruf, L as SVG, b as SenderIp, S as SignalCardThemeProvider, j as SignedHeaders, f as SignerDomain, p as Sp, y as Spf, x as SpfAlignment, t as SpfDomain, d as SpfRecord, B as Ssl, v as SubdomainPolicy, z as Tls, U as TlsRptRecord, l as Ttl, T as TxtRecord, e as TxtRecords, V as VMC, Y as Version, c as createGlossaryLink, g as glossaryLabelIds, a as useResolvedTheme, u as useSignalCardTheme } from './SignalCardSpfDomain.js';
1
+ import { a7 as signalCardsLogger, a8 as useSignalCardTranslation, a9 as useCollapseController, aa as adaptAmpExtractor, ab as ExtractedCategoryContent, ac as Checklist, ad as SignalCardNormal, ae as EXTRACTION_CAPTION_KEYS, af as adaptDkimExtractor, ag as useMultiNamespaceTranslation, ah as adaptDomainAnalyzerDkimExtractor, ai as COLOR, aj as parseGlossaryMarkdown, ak as TooltipInPortalWrapper, al as FONT, am as adaptDmarcExtractor, an as DmarcPromoBanner, ao as adaptDnssecExtractor, ap as adaptFcrdnsExtractor, aq as adaptMtaStsExtractor, ar as adaptSpfExtractor, E as Ehlo, R as ReturnPath, as as adaptDomainAnalyzerSpfExtractor, at as adaptSubdoExtractor, au as adaptThreatIntelligenceExtractor, av as adaptTlsExtractor, aw as adaptUrlsExtractor, ax as SignalCardDmarcDomain$1, ay as SignalCardSpfDomain$1, az as SignalCardBimi$1, a as useResolvedTheme, S as SignalCardThemeProvider, aA as withSignalCardTheme } from './SignalCardSpfDomain.js';
2
+ export { A as ARecord, Q as ATAG, I as BimiRecord, M as CMC, i as Canonicalization, H as CipherSuite, C as CnameRecord, D as Dkim, m as DkimAlgorithm, w as DkimAlignment, h as DkimSelector, k as DkimSignature, s as DkimSigningDomain, U as Dmarc, J as DmarcCompliant, n as DmarcPolicy, E as Ehlo, F as From, a6 as GLOSSARY_ICON_MAP, G as GlossaryTerm, N as ITAG, K as KeyLength, a0 as MaxAge, _ as Mode, a1 as MtaStsCertificate, a3 as MtaStsCertificateCnameName, a5 as MtaStsCertificateCnameType, a4 as MtaStsCertificateCnameValue, a2 as MtaStsCertificateExpiry, Y as MtaStsPolicyFile, X as MtaStsRecord, $ as Mx, O as OrganizationalDomain, o as Pct, P as PtrRecord, R as ReturnPath, q as Rua, r as Ruf, L as SVG, b as SenderIp, S as SignalCardThemeProvider, j as SignedHeaders, f as SignerDomain, p as Sp, y as Spf, x as SpfAlignment, t as SpfDomain, d as SpfRecord, B as Ssl, v as SubdomainPolicy, z as Tls, W as TlsRptRecord, l as Ttl, T as TxtRecord, e as TxtRecords, V as VMC, Z as Version, c as createGlossaryLink, g as glossaryLabelIds, a as useResolvedTheme, u as useSignalCardTheme } from './SignalCardSpfDomain.js';
3
3
  import { DKIM_KEY, extractGoogleYahooComplianceData, statusToTranslationKey, buildSPFCheckerLink, getSpfPassResult, SUBDO_CARD_STATUS, SIGNAL_TYPES, BIMI_CHECKER_SIGNAL_TYPES, DOMAIN_ANALYZER_SIGNAL_TYPES, SIGNAL_CARD_POSITIONS, STATUS_ICON_STYLES, getCanonicalSignalType, DEFAULT_PRIORITY_SIGNAL_TYPES, getSignalStatus } from '@redsift/signal-logic';
4
4
  export { BIMI_CHECKER_SIGNAL_TYPES, CARD_STATUS, DOMAIN_ANALYZER_SIGNAL_TYPES, PUBLIC_INVESTIGATE_SIGNAL_TYPES, SIGNAL_TYPES, getSignalStatus } from '@redsift/signal-logic';
5
5
  import { _ as _objectWithoutProperties, a as _extends, b as _objectSpread2 } from './_rollupPluginBabelHelpers.js';
@@ -1689,6 +1689,19 @@ function hasReportWarnings(dmarc) {
1689
1689
  return getTranslatableReportWarnings(dmarc).length > 0;
1690
1690
  }
1691
1691
 
1692
+ /**
1693
+ * Returns true when the subdomain has no own DMARC TXT record but inherits
1694
+ * a policy from its organisational (parent) domain.
1695
+ */
1696
+ function isInheritedPolicy(dmarc) {
1697
+ if (!dmarc) return false;
1698
+ if (dmarc.result !== 'none' || !dmarc.policy) return false;
1699
+ if (!dmarc.policyDomain || !dmarc.fromDomain) return false;
1700
+ // policyDomain is e.g. '_dmarc.redsift.io', fromDomain is 'sub.redsift.io'
1701
+ const orgDomain = dmarc.policyDomain.replace(/^_dmarc\./, '');
1702
+ return orgDomain !== dmarc.fromDomain;
1703
+ }
1704
+
1692
1705
  /**
1693
1706
  * DmarcSummaryBoxes renders two side-by-side summary boxes for the DMARC card.
1694
1707
  *
@@ -1699,7 +1712,7 @@ function hasReportWarnings(dmarc) {
1699
1712
  * On smaller viewports (≤765px) the boxes stack vertically.
1700
1713
  */
1701
1714
  function DmarcSummaryBoxes(_ref2) {
1702
- var _dmarc$policy$pct, _dmarc$policy2, _dmarc$policy3, _dmarc$policy3$rua, _dmarc$raw2;
1715
+ var _dmarc$policy$pct, _dmarc$policy2, _dmarc$policy3, _dmarc$policy3$rua, _dmarc$raw2, _dmarc$policyDomain$r, _dmarc$policyDomain;
1703
1716
  let {
1704
1717
  dmarc,
1705
1718
  isDomainAnalyzer = false,
@@ -1710,6 +1723,8 @@ function DmarcSummaryBoxes(_ref2) {
1710
1723
  const pct = (_dmarc$policy$pct = dmarc === null || dmarc === void 0 ? void 0 : (_dmarc$policy2 = dmarc.policy) === null || _dmarc$policy2 === void 0 ? void 0 : _dmarc$policy2.pct) !== null && _dmarc$policy$pct !== void 0 ? _dmarc$policy$pct : 100;
1711
1724
  const reportWarnings = hasReportWarnings(dmarc);
1712
1725
  const hasRua = Boolean(dmarc === null || dmarc === void 0 ? void 0 : (_dmarc$policy3 = dmarc.policy) === null || _dmarc$policy3 === void 0 ? void 0 : (_dmarc$policy3$rua = _dmarc$policy3.rua) === null || _dmarc$policy3$rua === void 0 ? void 0 : _dmarc$policy3$rua.length) || /(?:^|;\s*)rua\s*=\s*mailto:/i.test((_dmarc$raw2 = dmarc === null || dmarc === void 0 ? void 0 : dmarc.raw) !== null && _dmarc$raw2 !== void 0 ? _dmarc$raw2 : '');
1726
+ const inherited = isInheritedPolicy(dmarc);
1727
+ const orgDomain = (_dmarc$policyDomain$r = dmarc === null || dmarc === void 0 ? void 0 : (_dmarc$policyDomain = dmarc.policyDomain) === null || _dmarc$policyDomain === void 0 ? void 0 : _dmarc$policyDomain.replace(/^_dmarc\./, '')) !== null && _dmarc$policyDomain$r !== void 0 ? _dmarc$policyDomain$r : '';
1713
1728
  const getDomainBody = state => {
1714
1729
  // When reject-full has report warnings, use a combined summary that replaces
1715
1730
  // specific problem details with a concise impact statement.
@@ -1773,6 +1788,12 @@ function DmarcSummaryBoxes(_ref2) {
1773
1788
  }).join(' ');
1774
1789
  body = `${body} ${warnings}`;
1775
1790
  }
1791
+ if (inherited) {
1792
+ const prefix = t('card.dmarc.summary-domain-inherited-prefix', {
1793
+ orgDomain
1794
+ });
1795
+ body = `${prefix} ${body}`;
1796
+ }
1776
1797
  return body;
1777
1798
  };
1778
1799
  const getEmailBody = state => {
@@ -3722,7 +3743,8 @@ const SignalListSection = /*#__PURE__*/memo(function SignalListSection(_ref) {
3722
3743
  })));
3723
3744
  });
3724
3745
 
3725
- const _excluded = ["signals", "error", "isCardEnabledMap", "prioritySignalTypes", "initialSelectedSignalType", "onSelectSignalType", "renderCardHeader", "cardPromoHref", "renderCardFooter", "prioritySectionHeading", "remainingSectionHeading", "useInvestigateColors", "isCollapsible", "areAllCollapsed", "onCollapseAll", "recommendations", "recommendationsLoading", "showRecommendations", "recommendationsCTA", "onExpandSignalCard", "onCheckAnotherEmail", "renderHeaderAction", "className"];
3746
+ const _excluded = ["signals", "error", "isCardEnabledMap", "prioritySignalTypes", "initialSelectedSignalType", "onSelectSignalType", "renderCardHeader", "cardPromoHref", "renderCardFooter", "prioritySectionHeading", "remainingSectionHeading", "useInvestigateColors", "isCollapsible", "areAllCollapsed", "onCollapseAll", "recommendations", "recommendationsLoading", "showRecommendations", "recommendationsCTA", "onExpandSignalCard", "onCheckAnotherEmail", "renderHeaderAction", "className"],
3747
+ _excluded2 = ["shortDescription", "longDescription", "introDescription"];
3726
3748
  const COMPONENT_NAME = 'SignalCardList';
3727
3749
  const CLASSNAME = 'redsift-signal-card-list';
3728
3750
  const SignalCardList$1 = /*#__PURE__*/forwardRef(function SignalCardList(_ref, ref) {
@@ -3997,6 +4019,12 @@ const SignalCardList$1 = /*#__PURE__*/forwardRef(function SignalCardList(_ref, r
3997
4019
  } = summary;
3998
4020
  const isSelected = signal.signalType === activeSignalType;
3999
4021
  if (!CardComponent) return null;
4022
+
4023
+ // Strip consumer-provided descriptions so each card uses its own DS translations
4024
+ // (synced with @redsift/signal-logic). Without this, consumers like ondmarc pass
4025
+ // i18next values that override the DS translations via SignalCardNormal's ?? fallback,
4026
+ // which can result in empty "Show more" content when the consumer lacks translations.
4027
+ const signalProps = _objectWithoutProperties(signal, _excluded2);
4000
4028
  return /*#__PURE__*/React__default.createElement(StyledCardWrapper, {
4001
4029
  key: signal.signalType,
4002
4030
  style: {
@@ -4004,7 +4032,7 @@ const SignalCardList$1 = /*#__PURE__*/forwardRef(function SignalCardList(_ref, r
4004
4032
  }
4005
4033
  }, /*#__PURE__*/React__default.createElement(StyledCardContainer, null, /*#__PURE__*/React__default.createElement(SignalCardErrorBoundary, {
4006
4034
  signalType: signal.signalType
4007
- }, /*#__PURE__*/React__default.createElement(CardComponent, _extends({}, signal, {
4035
+ }, /*#__PURE__*/React__default.createElement(CardComponent, _extends({}, signalProps, {
4008
4036
  domain: (_ref7 = (_signal$jmap$extsecre = (_signal$jmap4 = signal.jmap) === null || _signal$jmap4 === void 0 ? void 0 : (_signal$jmap4$extsecr = _signal$jmap4.extsecrep) === null || _signal$jmap4$extsecr === void 0 ? void 0 : (_signal$jmap4$extsecr2 = _signal$jmap4$extsecr.dmarc) === null || _signal$jmap4$extsecr2 === void 0 ? void 0 : _signal$jmap4$extsecr2.fromDomain) !== null && _signal$jmap$extsecre !== void 0 ? _signal$jmap$extsecre : (_signal$jmap5 = signal.jmap) === null || _signal$jmap5 === void 0 ? void 0 : (_signal$jmap5$extsecr = _signal$jmap5.extsecrep) === null || _signal$jmap5$extsecr === void 0 ? void 0 : (_signal$jmap5$extsecr2 = _signal$jmap5$extsecr.spf) === null || _signal$jmap5$extsecr2 === void 0 ? void 0 : _signal$jmap5$extsecr2.domain) !== null && _ref7 !== void 0 ? _ref7 : undefined,
4009
4037
  onHeightChange: noopHeightChange,
4010
4038
  renderHeader: renderCardHeader ? () => renderCardHeader(signal) : undefined,