@redsift/products 12.5.9-muiv7 → 12.5.9

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.
package/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as _redsift_design_system from '@redsift/design-system';
4
4
  import { ButtonColor, Theme, ValueOf, ContainerProps, HeadingProps, IconProps, StylingProps, Comp, ButtonProps } from '@redsift/design-system';
5
5
  import * as _redsift_pickers from '@redsift/pickers';
6
6
  import { ItemProps, MenuButtonProps, MenuButtonContentProps, MenuButtonContentHeaderProps, MenuButtonContentMenuProps } from '@redsift/pickers';
7
- import { JmapProps, InvestigateProps, SpfProps, DmarcProps, DkimProps, DnsSecurityProps, ExtsecrepProps, MtaProps, DomainAnalyzerDkimProps, DomainAnalyzerSpfProps, CardStatus, TlsProps, EhloProps, FcrdnsProps, EhloCheckProps, RecommendationsData } from '@redsift/signal-logic';
7
+ import { RecommendationsData, JmapProps, DmarcProps, DkimProps, SpfProps, EhloProps, FcrdnsProps, EhloCheckProps, TlsProps, CardStatus, DomainAnalyzerSpfProps, DomainAnalyzerDkimProps, MtaProps, ExtsecrepProps, DnsSecurityProps, InvestigateProps } from '@redsift/signal-logic';
8
8
  export { BIMI_CHECKER_SIGNAL_TYPES, BimiCheckerSignalType, CARD_STATUS, DOMAIN_ANALYZER_SIGNAL_TYPES, DomainAnalyzerSignalType, PUBLIC_INVESTIGATE_SIGNAL_TYPES, PublicInvestigateSignalType, RecommendationSignal, RecommendationsAnalysis, RecommendationsData, SIGNAL_TYPES, SignalType, getSignalStatus } from '@redsift/signal-logic';
9
9
 
10
10
  /**
@@ -220,6 +220,132 @@ declare const RadarSimpleMenuButton: Comp<Omit<MenuButtonProps, 'children'> & {
220
220
  icon?: Omit<IconProps, 'ref'>;
221
221
  } & Pick<MenuButtonContentMenuProps, 'children'>, HTMLDivElement>;
222
222
 
223
+ type SignalData = {
224
+ signalType: string;
225
+ jmap?: {
226
+ extsecrep?: Record<string, any>;
227
+ [key: string]: unknown;
228
+ };
229
+ shortDescription?: unknown;
230
+ [key: string]: unknown;
231
+ };
232
+ type ErrorLike = {
233
+ name?: string;
234
+ message?: string;
235
+ stack?: string;
236
+ };
237
+ type CardEnabledOverrides = Record<string, boolean | undefined>;
238
+ interface SignalCardListProps extends Omit<ComponentProps<'div'>, 'children'> {
239
+ /** Array of signal data objects containing DMARC, DKIM, SPF information */
240
+ signals?: SignalData[];
241
+ /** Error object to display if signal loading fails */
242
+ error?: ErrorLike | null;
243
+ /** Map of signal types to enabled/disabled state */
244
+ isCardEnabledMap?: CardEnabledOverrides;
245
+ /** Signal types to display in the priority section (shown first). Defaults to DMARC, DKIM, SPF */
246
+ prioritySignalTypes?: string[];
247
+ /** Initial selected signal type for external selection control */
248
+ initialSelectedSignalType?: string | null;
249
+ /** Callback when a signal card is selected */
250
+ onSelectSignalType?: (signalType: string) => void;
251
+ /** Custom header renderer for adding content at the top of each card, after the title */
252
+ renderCardHeader?: (signal: SignalData) => React.ReactNode;
253
+ /** Override the promo banner button href on all cards and the email provider banner CTA link (e.g. to add UTM parameters). For per-card promo banners, only used when renderCardHeader is not provided. Defaults to the OnDMARC signup URL (`https://iam.redsift.cloud/signup?redirectapp=cloud&product=ondmarc`). */
254
+ cardPromoHref?: string;
255
+ /**
256
+ * Optional callback fired when the user clicks any CTA link that navigates
257
+ * to the promo/signup href. This includes:
258
+ * - The "Protect your domain" promo banner inside each card (shown when
259
+ * `renderCardHeader` is not provided; uses `cardPromoHref` or the default
260
+ * OnDMARC signup URL)
261
+ * - The "Set up monitoring" link in the email provider banner (only rendered
262
+ * when `cardPromoHref` is set)
263
+ *
264
+ * Fires alongside the normal navigation (does not prevent default).
265
+ */
266
+ onCardPromoClick?: () => void;
267
+ /** Override the promo banner text on all cards. Only used when renderCardHeader is not provided. Defaults to the translated OnDMARC trial copy. */
268
+ cardPromoText?: string;
269
+ /** Override the promo banner button label on all cards. Defaults to the translated 'Protect your domain'. */
270
+ cardPromoButtonLabel?: string;
271
+ /** Custom footer renderer for adding content at the bottom of each card */
272
+ renderCardFooter?: (signal: SignalData) => React.ReactNode;
273
+ /**
274
+ * Heading text for the priority signals section.
275
+ * Defaults to "Required for the selected compliance profile"
276
+ */
277
+ prioritySectionHeading?: string;
278
+ /**
279
+ * Heading text for the remaining signals section.
280
+ * Defaults to "Not required for the selected compliance profile"
281
+ */
282
+ remainingSectionHeading?: string;
283
+ /** Use Investigate handbook colors instead of Design System CSS variables */
284
+ useInvestigateColors?: boolean;
285
+ /**
286
+ * Enable collapsible sections inside all child cards.
287
+ * @default true
288
+ */
289
+ isCollapsible?: boolean;
290
+ /**
291
+ * Controlled collapsed state for all sections in all child cards.
292
+ * Used with isCollapsible to manage collapsed state externally.
293
+ */
294
+ areAllCollapsed?: boolean;
295
+ /**
296
+ * Callback fired when the collapse-all toggle changes in any child card.
297
+ */
298
+ onCollapseAll?: (areAllCollapsed: boolean) => void;
299
+ /**
300
+ * AI-powered recommendations data including analysis and per-protocol signals.
301
+ * When provided (and showRecommendations is not false), renders a RecommendationsSummary
302
+ * section above the signal cards.
303
+ */
304
+ recommendations?: RecommendationsData | null;
305
+ /**
306
+ * Whether recommendations data is still loading.
307
+ * When true, shows a skeleton/shimmer placeholder for the recommendations section.
308
+ */
309
+ recommendationsLoading?: boolean;
310
+ /**
311
+ * Whether to show the recommendations section.
312
+ * @default true
313
+ */
314
+ showRecommendations?: boolean;
315
+ /**
316
+ * Structured data for the CTA card in the recommendations section.
317
+ * The DS owns the layout; the consumer provides the content and click handler.
318
+ */
319
+ recommendationsCTA?: {
320
+ title: string;
321
+ description: string;
322
+ buttonLabel: string;
323
+ onClickCTA: () => void;
324
+ };
325
+ /**
326
+ * Callback when user clicks "See more details" on a status card.
327
+ * The consumer uses this to scroll to and expand the corresponding signal card.
328
+ */
329
+ onExpandSignalCard?: (signalType: string) => void;
330
+ /**
331
+ * Callback for the "Check another email" button in the header.
332
+ * When provided, renders a styled button with a sync icon and translated label.
333
+ * Only rendered when a checked email is found in the signal data.
334
+ */
335
+ onCheckAnotherEmail?: () => void;
336
+ /**
337
+ * Render prop for custom action area in the header.
338
+ * Overrides the default "Check another email" button when provided.
339
+ * Only rendered when a checked email is found in the signal data.
340
+ */
341
+ renderHeaderAction?: () => ReactNode;
342
+ /**
343
+ * Whether to show the "Powered by OnDMARC" branding in the header.
344
+ * @default true
345
+ */
346
+ showBranding?: boolean;
347
+ }
348
+
223
349
  /**
224
350
  * Common props shared by all signal card components. These cover layout options
225
351
  * that ultimately map to `SignalCardNormal`.
@@ -251,148 +377,159 @@ interface SignalCardSharedProps extends Omit<ComponentProps<'div'>, 'children' |
251
377
  onCollapseAll?: (areAllCollapsed: boolean) => void;
252
378
  }
253
379
 
380
+ /**
381
+ * Extended JMAP props for DMARC card including required extsecrep data
382
+ */
383
+ interface SignalCardDmarcJmapProps extends JmapProps {
384
+ extsecrep: {
385
+ dmarc?: DmarcProps;
386
+ dkim?: DkimProps | DkimProps[];
387
+ spf?: SpfProps;
388
+ };
389
+ }
254
390
  /**
255
391
  * Component props.
256
392
  */
257
- interface SignalCardGoogleYahooComplianceProps extends SignalCardSharedProps {
258
- /**
259
- * Domain name (currently not used but maintained for API compatibility)
260
- */
261
- domain?: string | null;
393
+ interface SignalCardDmarcProps extends SignalCardSharedProps {
262
394
  /**
263
- * JMAP extsecrep data containing authentication results
395
+ * JMAP email data containing DMARC, DKIM, SPF information
264
396
  */
265
- jmap?: JmapProps | null;
397
+ jmap: SignalCardDmarcJmapProps;
266
398
  /**
267
- * Investigate data with FCrDNS and EHLO check results
399
+ * Whether this is being used in domain analyzer mode
268
400
  */
269
- investigate?: InvestigateProps | null;
401
+ isDomainAnalyzer?: boolean;
270
402
  }
271
403
 
404
+ type SpfData = SpfProps;
272
405
  /**
273
406
  * Component props.
274
407
  */
275
- interface SignalCardUrlsProps extends SignalCardSharedProps {
276
- /**
277
- * Investigate data containing extracted URLs
278
- */
279
- investigate?: InvestigateProps | null;
408
+ interface SignalCardSpfProps extends SignalCardSharedProps {
409
+ /** JMAP email data containing SPF information */
410
+ jmap: {
411
+ extsecrep: {
412
+ spf?: SpfData;
413
+ };
414
+ };
280
415
  }
281
416
 
282
- /**
283
- * External security report data structure
284
- */
285
- interface ExtsecrepData {
286
- /** SPF check data */
287
- spf?: SpfProps | null;
288
- /** DMARC policy data */
289
- dmarc?: DmarcProps | null;
290
- /** DKIM signature data - can be array or object */
291
- dkim?: DkimProps | DkimProps[] | null;
292
- }
417
+ type DkimResult = DkimProps;
418
+ type DmarcResult$1 = DmarcProps | null;
293
419
  /**
294
420
  * Component props.
295
421
  */
296
- interface SignalCardAmpProps extends SignalCardSharedProps {
297
- /** JMAP data containing authentication information */
422
+ interface SignalCardDkimProps extends SignalCardSharedProps {
423
+ /** JMAP email data containing DKIM, DMARC information */
298
424
  jmap: {
299
- /** External security report with SPF, DMARC, DKIM data */
300
- extsecrep: ExtsecrepData;
301
- /** From email address information */
302
- from?: {
303
- email?: string | null;
304
- } | null;
425
+ extsecrep: {
426
+ dkim?: DkimResult | DkimResult[] | null;
427
+ dmarc?: DmarcResult$1;
428
+ };
305
429
  };
306
430
  }
307
431
 
308
432
  /**
309
433
  * Component props.
310
434
  */
311
- interface SignalCardDnssecProps extends SignalCardSharedProps {
312
- /** JMAP data containing DNS security information */
313
- jmap?: {
314
- extsecrep?: {
315
- dnsSecurity?: DnsSecurityProps | null;
316
- } | null;
317
- } | null;
318
- /** Custom short description (overrides default based on result) */
319
- shortDescription?: ReactNode;
435
+ interface SignalCardFcrdnsProps extends SignalCardSharedProps {
436
+ /** JMAP data containing EHLO information */
437
+ jmap: {
438
+ extsecrep: {
439
+ ehlo?: EhloProps;
440
+ };
441
+ };
442
+ /** Investigation data with FCrDNS and EHLO check results */
443
+ investigate?: {
444
+ fcrdns?: FcrdnsProps | null;
445
+ ehloCheck?: EhloCheckProps | null;
446
+ };
320
447
  }
321
448
 
322
- type ExtsecrepThreatLevel = ExtsecrepProps;
323
- type FromInfo = {
324
- name?: string | null;
325
- email?: string | null;
326
- } | null;
327
449
  /**
328
450
  * Component props.
329
451
  */
330
- interface SignalCardThreatInvProps extends SignalCardSharedProps {
331
- /** JMAP email data containing threat intelligence information */
452
+ interface SignalCardTlsProps extends SignalCardSharedProps {
453
+ /** JMAP email data containing TLS information */
332
454
  jmap: {
333
- extsecrep: ExtsecrepThreatLevel;
334
- from?: FromInfo;
455
+ extsecrep: {
456
+ tls?: TlsProps;
457
+ };
335
458
  };
336
- /** Whether this is being used in domain analyzer mode */
337
- isDomainAnalyzer?: boolean;
338
459
  }
339
460
 
340
- type SubdoReportEntry = {
341
- message?: string;
342
- spfError?: string;
343
- raw?: string;
344
- value?: unknown;
345
- details?: unknown;
346
- [key: string]: unknown;
461
+ type DmarcResult = {
462
+ status?: CardStatus | string | null;
463
+ errors?: string[] | null;
464
+ };
465
+ type DmarcData$1 = {
466
+ raw?: string | null;
467
+ result?: DmarcResult | null;
468
+ txtExtractedFrom?: string | null;
469
+ policyDomain?: string | null;
470
+ fromDomain?: string | null;
471
+ domainPublished?: string | null;
347
472
  };
473
+ type Originator = {
474
+ domain?: string | null;
475
+ orgDomain?: string | null;
476
+ } | null;
477
+ interface SignalCardDmarcDomainProps extends SignalCardSharedProps {
478
+ jmap: {
479
+ extsecrep: {
480
+ dmarc: DmarcData$1;
481
+ originator?: Originator;
482
+ };
483
+ };
484
+ }
485
+
348
486
  /**
349
- * Component props.
487
+ * SPF report item from the BIMI Checker API
350
488
  */
351
- interface SignalCardSubdoProps extends SignalCardSharedProps {
352
- /**
353
- * JMAP data containing SPF subdomain takeover report
354
- */
355
- jmap?: {
356
- extsecrep?: {
357
- spf?: {
358
- domain?: string | null;
359
- report?: SubdoReportEntry[] | null;
360
- } | null;
361
- } | null;
362
- } | null;
489
+ interface SpfReportItem {
490
+ status?: string;
491
+ message?: string;
492
+ spfError?: string;
493
+ }
494
+ interface SpfDetails {
495
+ raw?: string | string[] | null;
496
+ status?: string | null;
497
+ txtExtractedFrom?: string | null;
498
+ report?: SpfReportItem[];
499
+ [key: string]: unknown;
363
500
  }
364
-
365
501
  /**
366
- * Component props.
502
+ * Props for the SignalCardSpfDomain component.
503
+ *
504
+ * Simplified SPF Domain Card for BIMI Checker - shows only pass/fail status and raw SPF record.
367
505
  */
368
- interface SignalCardMtaStsProps extends SignalCardSharedProps {
369
- /** JMAP email data containing MTA-STS information */
506
+ interface SignalCardSpfDomainProps extends SignalCardSharedProps {
507
+ /**
508
+ * JMAP data containing SPF authentication results
509
+ */
370
510
  jmap?: {
371
511
  extsecrep?: {
372
- mta?: MtaProps | null;
512
+ spf?: SpfDetails | null;
373
513
  } | null;
374
514
  } | null;
375
- /** Domain to analyze */
376
- domain?: string;
377
515
  }
378
516
 
379
517
  /**
380
518
  * Component props.
381
519
  */
382
- interface SignalCardBimiProps extends SignalCardSharedProps {
520
+ interface SignalCardSpfDomainAnalyzerProps extends SignalCardSharedProps {
383
521
  /**
384
- * JMAP data containing BIMI and DMARC information from the email security report.
522
+ * JMAP data containing SPF analysis results
385
523
  */
386
524
  jmap: {
387
525
  extsecrep: {
388
- bimi?: any;
389
- dmarc?: any;
526
+ spf: DomainAnalyzerSpfProps;
527
+ originator?: {
528
+ domain?: string | null;
529
+ orgDomain?: string | null;
530
+ } | null;
390
531
  };
391
532
  };
392
- /**
393
- * Optional callback invoked when the component mounts.
394
- */
395
- onComponentMount?: () => void;
396
533
  }
397
534
 
398
535
  /**
@@ -401,7 +538,7 @@ interface SignalCardBimiProps extends SignalCardSharedProps {
401
538
  */
402
539
  type ExtractionCaptionType = 'email' | 'dns' | 'dns-details' | 'policy' | 'email-details';
403
540
 
404
- type DmarcData$1 = {
541
+ type DmarcData = {
405
542
  domain?: string | null;
406
543
  } | null;
407
544
  /**
@@ -415,7 +552,7 @@ interface SignalCardDkimDomainAnalyzerProps extends SignalCardSharedProps {
415
552
  */
416
553
  jmap: {
417
554
  extsecrep: {
418
- dmarc?: DmarcData$1;
555
+ dmarc?: DmarcData;
419
556
  dkim?: DomainAnalyzerDkimProps;
420
557
  };
421
558
  };
@@ -424,282 +561,145 @@ interface SignalCardDkimDomainAnalyzerProps extends SignalCardSharedProps {
424
561
  /**
425
562
  * Component props.
426
563
  */
427
- interface SignalCardSpfDomainAnalyzerProps extends SignalCardSharedProps {
564
+ interface SignalCardBimiProps extends SignalCardSharedProps {
428
565
  /**
429
- * JMAP data containing SPF analysis results
566
+ * JMAP data containing BIMI and DMARC information from the email security report.
430
567
  */
431
568
  jmap: {
432
569
  extsecrep: {
433
- spf: DomainAnalyzerSpfProps;
434
- originator?: {
435
- domain?: string | null;
436
- orgDomain?: string | null;
437
- } | null;
570
+ bimi?: any;
571
+ dmarc?: any;
438
572
  };
439
573
  };
574
+ /**
575
+ * Optional callback invoked when the component mounts.
576
+ */
577
+ onComponentMount?: () => void;
440
578
  }
441
579
 
442
580
  /**
443
- * SPF report item from the BIMI Checker API
581
+ * Component props.
444
582
  */
445
- interface SpfReportItem {
446
- status?: string;
583
+ interface SignalCardMtaStsProps extends SignalCardSharedProps {
584
+ /** JMAP email data containing MTA-STS information */
585
+ jmap?: {
586
+ extsecrep?: {
587
+ mta?: MtaProps | null;
588
+ } | null;
589
+ } | null;
590
+ /** Domain to analyze */
591
+ domain?: string;
592
+ }
593
+
594
+ type SubdoReportEntry = {
447
595
  message?: string;
448
596
  spfError?: string;
449
- }
450
- interface SpfDetails {
451
- raw?: string | string[] | null;
452
- status?: string | null;
453
- txtExtractedFrom?: string | null;
454
- report?: SpfReportItem[];
597
+ raw?: string;
598
+ value?: unknown;
599
+ details?: unknown;
455
600
  [key: string]: unknown;
456
- }
601
+ };
457
602
  /**
458
- * Props for the SignalCardSpfDomain component.
459
- *
460
- * Simplified SPF Domain Card for BIMI Checker - shows only pass/fail status and raw SPF record.
603
+ * Component props.
461
604
  */
462
- interface SignalCardSpfDomainProps extends SignalCardSharedProps {
605
+ interface SignalCardSubdoProps extends SignalCardSharedProps {
463
606
  /**
464
- * JMAP data containing SPF authentication results
607
+ * JMAP data containing SPF subdomain takeover report
465
608
  */
466
609
  jmap?: {
467
610
  extsecrep?: {
468
- spf?: SpfDetails | null;
611
+ spf?: {
612
+ domain?: string | null;
613
+ report?: SubdoReportEntry[] | null;
614
+ } | null;
469
615
  } | null;
470
616
  } | null;
471
617
  }
472
618
 
473
- type DmarcResult$1 = {
474
- status?: CardStatus | string | null;
475
- errors?: string[] | null;
476
- };
477
- type DmarcData = {
478
- raw?: string | null;
479
- result?: DmarcResult$1 | null;
480
- txtExtractedFrom?: string | null;
481
- policyDomain?: string | null;
482
- fromDomain?: string | null;
483
- domainPublished?: string | null;
484
- };
485
- type Originator = {
486
- domain?: string | null;
487
- orgDomain?: string | null;
619
+ type ExtsecrepThreatLevel = ExtsecrepProps;
620
+ type FromInfo = {
621
+ name?: string | null;
622
+ email?: string | null;
488
623
  } | null;
489
- interface SignalCardDmarcDomainProps extends SignalCardSharedProps {
490
- jmap: {
491
- extsecrep: {
492
- dmarc: DmarcData;
493
- originator?: Originator;
494
- };
495
- };
496
- }
497
-
498
624
  /**
499
625
  * Component props.
500
626
  */
501
- interface SignalCardTlsProps extends SignalCardSharedProps {
502
- /** JMAP email data containing TLS information */
627
+ interface SignalCardThreatInvProps extends SignalCardSharedProps {
628
+ /** JMAP email data containing threat intelligence information */
503
629
  jmap: {
504
- extsecrep: {
505
- tls?: TlsProps;
506
- };
630
+ extsecrep: ExtsecrepThreatLevel;
631
+ from?: FromInfo;
507
632
  };
633
+ /** Whether this is being used in domain analyzer mode */
634
+ isDomainAnalyzer?: boolean;
508
635
  }
509
636
 
510
637
  /**
511
638
  * Component props.
512
639
  */
513
- interface SignalCardFcrdnsProps extends SignalCardSharedProps {
514
- /** JMAP data containing EHLO information */
515
- jmap: {
516
- extsecrep: {
517
- ehlo?: EhloProps;
518
- };
519
- };
520
- /** Investigation data with FCrDNS and EHLO check results */
521
- investigate?: {
522
- fcrdns?: FcrdnsProps | null;
523
- ehloCheck?: EhloCheckProps | null;
524
- };
640
+ interface SignalCardDnssecProps extends SignalCardSharedProps {
641
+ /** JMAP data containing DNS security information */
642
+ jmap?: {
643
+ extsecrep?: {
644
+ dnsSecurity?: DnsSecurityProps | null;
645
+ } | null;
646
+ } | null;
647
+ /** Custom short description (overrides default based on result) */
648
+ shortDescription?: ReactNode;
525
649
  }
526
650
 
527
- type DkimResult = DkimProps;
528
- type DmarcResult = DmarcProps | null;
529
651
  /**
530
- * Component props.
652
+ * External security report data structure
531
653
  */
532
- interface SignalCardDkimProps extends SignalCardSharedProps {
533
- /** JMAP email data containing DKIM, DMARC information */
534
- jmap: {
535
- extsecrep: {
536
- dkim?: DkimResult | DkimResult[] | null;
537
- dmarc?: DmarcResult;
538
- };
539
- };
654
+ interface ExtsecrepData {
655
+ /** SPF check data */
656
+ spf?: SpfProps | null;
657
+ /** DMARC policy data */
658
+ dmarc?: DmarcProps | null;
659
+ /** DKIM signature data - can be array or object */
660
+ dkim?: DkimProps | DkimProps[] | null;
540
661
  }
541
-
542
- type SpfData = SpfProps;
543
662
  /**
544
663
  * Component props.
545
664
  */
546
- interface SignalCardSpfProps extends SignalCardSharedProps {
547
- /** JMAP email data containing SPF information */
665
+ interface SignalCardAmpProps extends SignalCardSharedProps {
666
+ /** JMAP data containing authentication information */
548
667
  jmap: {
549
- extsecrep: {
550
- spf?: SpfData;
551
- };
668
+ /** External security report with SPF, DMARC, DKIM data */
669
+ extsecrep: ExtsecrepData;
670
+ /** From email address information */
671
+ from?: {
672
+ email?: string | null;
673
+ } | null;
552
674
  };
553
675
  }
554
676
 
555
- /**
556
- * Extended JMAP props for DMARC card including required extsecrep data
557
- */
558
- interface SignalCardDmarcJmapProps extends JmapProps {
559
- extsecrep: {
560
- dmarc?: DmarcProps;
561
- dkim?: DkimProps | DkimProps[];
562
- spf?: SpfProps;
563
- };
564
- }
565
677
  /**
566
678
  * Component props.
567
679
  */
568
- interface SignalCardDmarcProps extends SignalCardSharedProps {
569
- /**
570
- * JMAP email data containing DMARC, DKIM, SPF information
571
- */
572
- jmap: SignalCardDmarcJmapProps;
680
+ interface SignalCardUrlsProps extends SignalCardSharedProps {
573
681
  /**
574
- * Whether this is being used in domain analyzer mode
682
+ * Investigate data containing extracted URLs
575
683
  */
576
- isDomainAnalyzer?: boolean;
684
+ investigate?: InvestigateProps | null;
577
685
  }
578
686
 
579
- type SignalData = {
580
- signalType: string;
581
- jmap?: {
582
- extsecrep?: Record<string, any>;
583
- [key: string]: unknown;
584
- };
585
- shortDescription?: unknown;
586
- [key: string]: unknown;
587
- };
588
- type ErrorLike = {
589
- name?: string;
590
- message?: string;
591
- stack?: string;
592
- };
593
- type CardEnabledOverrides = Record<string, boolean | undefined>;
594
- interface SignalCardListProps extends Omit<ComponentProps<'div'>, 'children'> {
595
- /** Array of signal data objects containing DMARC, DKIM, SPF information */
596
- signals?: SignalData[];
597
- /** Error object to display if signal loading fails */
598
- error?: ErrorLike | null;
599
- /** Map of signal types to enabled/disabled state */
600
- isCardEnabledMap?: CardEnabledOverrides;
601
- /** Signal types to display in the priority section (shown first). Defaults to DMARC, DKIM, SPF */
602
- prioritySignalTypes?: string[];
603
- /** Initial selected signal type for external selection control */
604
- initialSelectedSignalType?: string | null;
605
- /** Callback when a signal card is selected */
606
- onSelectSignalType?: (signalType: string) => void;
607
- /** Custom header renderer for adding content at the top of each card, after the title */
608
- renderCardHeader?: (signal: SignalData) => React.ReactNode;
609
- /** Override the promo banner button href on all cards and the email provider banner CTA link (e.g. to add UTM parameters). For per-card promo banners, only used when renderCardHeader is not provided. Defaults to the OnDMARC signup URL (`https://iam.redsift.cloud/signup?redirectapp=cloud&product=ondmarc`). */
610
- cardPromoHref?: string;
611
- /**
612
- * Optional callback fired when the user clicks any CTA link that navigates
613
- * to the promo/signup href. This includes:
614
- * - The "Protect your domain" promo banner inside each card (shown when
615
- * `renderCardHeader` is not provided; uses `cardPromoHref` or the default
616
- * OnDMARC signup URL)
617
- * - The "Set up monitoring" link in the email provider banner (only rendered
618
- * when `cardPromoHref` is set)
619
- *
620
- * Fires alongside the normal navigation (does not prevent default).
621
- */
622
- onCardPromoClick?: () => void;
623
- /** Override the promo banner text on all cards. Only used when renderCardHeader is not provided. Defaults to the translated OnDMARC trial copy. */
624
- cardPromoText?: string;
625
- /** Override the promo banner button label on all cards. Defaults to the translated 'Protect your domain'. */
626
- cardPromoButtonLabel?: string;
627
- /** Custom footer renderer for adding content at the bottom of each card */
628
- renderCardFooter?: (signal: SignalData) => React.ReactNode;
629
- /**
630
- * Heading text for the priority signals section.
631
- * Defaults to "Required for the selected compliance profile"
632
- */
633
- prioritySectionHeading?: string;
634
- /**
635
- * Heading text for the remaining signals section.
636
- * Defaults to "Not required for the selected compliance profile"
637
- */
638
- remainingSectionHeading?: string;
639
- /** Use Investigate handbook colors instead of Design System CSS variables */
640
- useInvestigateColors?: boolean;
641
- /**
642
- * Enable collapsible sections inside all child cards.
643
- * @default true
644
- */
645
- isCollapsible?: boolean;
646
- /**
647
- * Controlled collapsed state for all sections in all child cards.
648
- * Used with isCollapsible to manage collapsed state externally.
649
- */
650
- areAllCollapsed?: boolean;
651
- /**
652
- * Callback fired when the collapse-all toggle changes in any child card.
653
- */
654
- onCollapseAll?: (areAllCollapsed: boolean) => void;
655
- /**
656
- * AI-powered recommendations data including analysis and per-protocol signals.
657
- * When provided (and showRecommendations is not false), renders a RecommendationsSummary
658
- * section above the signal cards.
659
- */
660
- recommendations?: RecommendationsData | null;
661
- /**
662
- * Whether recommendations data is still loading.
663
- * When true, shows a skeleton/shimmer placeholder for the recommendations section.
664
- */
665
- recommendationsLoading?: boolean;
666
- /**
667
- * Whether to show the recommendations section.
668
- * @default true
669
- */
670
- showRecommendations?: boolean;
671
- /**
672
- * Structured data for the CTA card in the recommendations section.
673
- * The DS owns the layout; the consumer provides the content and click handler.
674
- */
675
- recommendationsCTA?: {
676
- title: string;
677
- description: string;
678
- buttonLabel: string;
679
- onClickCTA: () => void;
680
- };
681
- /**
682
- * Callback when user clicks "See more details" on a status card.
683
- * The consumer uses this to scroll to and expand the corresponding signal card.
684
- */
685
- onExpandSignalCard?: (signalType: string) => void;
687
+ /**
688
+ * Component props.
689
+ */
690
+ interface SignalCardGoogleYahooComplianceProps extends SignalCardSharedProps {
686
691
  /**
687
- * Callback for the "Check another email" button in the header.
688
- * When provided, renders a styled button with a sync icon and translated label.
689
- * Only rendered when a checked email is found in the signal data.
692
+ * Domain name (currently not used but maintained for API compatibility)
690
693
  */
691
- onCheckAnotherEmail?: () => void;
694
+ domain?: string | null;
692
695
  /**
693
- * Render prop for custom action area in the header.
694
- * Overrides the default "Check another email" button when provided.
695
- * Only rendered when a checked email is found in the signal data.
696
+ * JMAP extsecrep data containing authentication results
696
697
  */
697
- renderHeaderAction?: () => ReactNode;
698
+ jmap?: JmapProps | null;
698
699
  /**
699
- * Whether to show the "Powered by OnDMARC" branding in the header.
700
- * @default true
700
+ * Investigate data with FCrDNS and EHLO check results
701
701
  */
702
- showBranding?: boolean;
702
+ investigate?: InvestigateProps | null;
703
703
  }
704
704
 
705
705
  /**