@redsift/products 12.5.2-muiv7 → 12.5.2

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/signal-cards.d.ts CHANGED
@@ -1,8 +1,118 @@
1
1
  import * as _redsift_design_system from '@redsift/design-system';
2
- import { JmapProps, InvestigateProps, SpfProps, DmarcProps, DkimProps, DnsSecurityProps, ExtsecrepProps, MtaProps, DomainAnalyzerDkimProps, DomainAnalyzerSpfProps, CardStatus, TlsProps, EhloProps, FcrdnsProps, EhloCheckProps, RecommendationsData } from '@redsift/signal-logic';
2
+ import { RecommendationsData, JmapProps, DmarcProps, DkimProps, SpfProps, EhloProps, FcrdnsProps, EhloCheckProps, TlsProps, CardStatus, DomainAnalyzerSpfProps, DomainAnalyzerDkimProps, MtaProps, ExtsecrepProps, DnsSecurityProps, InvestigateProps } from '@redsift/signal-logic';
3
3
  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';
4
4
  import react, { ComponentProps, ReactNode } from 'react';
5
5
 
6
+ type SignalData = {
7
+ signalType: string;
8
+ jmap?: {
9
+ extsecrep?: Record<string, any>;
10
+ [key: string]: unknown;
11
+ };
12
+ shortDescription?: unknown;
13
+ [key: string]: unknown;
14
+ };
15
+ type ErrorLike = {
16
+ name?: string;
17
+ message?: string;
18
+ stack?: string;
19
+ };
20
+ type CardEnabledOverrides = Record<string, boolean | undefined>;
21
+ interface SignalCardListProps extends Omit<ComponentProps<'div'>, 'children'> {
22
+ /** Array of signal data objects containing DMARC, DKIM, SPF information */
23
+ signals?: SignalData[];
24
+ /** Error object to display if signal loading fails */
25
+ error?: ErrorLike | null;
26
+ /** Map of signal types to enabled/disabled state */
27
+ isCardEnabledMap?: CardEnabledOverrides;
28
+ /** Signal types to display in the priority section (shown first). Defaults to DMARC, DKIM, SPF */
29
+ prioritySignalTypes?: string[];
30
+ /** Initial selected signal type for external selection control */
31
+ initialSelectedSignalType?: string | null;
32
+ /** Callback when a signal card is selected */
33
+ onSelectSignalType?: (signalType: string) => void;
34
+ /** Custom header renderer for adding content at the top of each card, after the title */
35
+ renderCardHeader?: (signal: SignalData) => React.ReactNode;
36
+ /** Override the promo banner button href on all cards (e.g. to add UTM parameters). Only used when renderCardHeader is not provided. Defaults to the OnDMARC signup URL (`https://iam.redsift.cloud/signup?redirectapp=cloud&product=ondmarc`). */
37
+ cardPromoHref?: string;
38
+ /** Custom footer renderer for adding content at the bottom of each card */
39
+ renderCardFooter?: (signal: SignalData) => React.ReactNode;
40
+ /**
41
+ * Heading text for the priority signals section.
42
+ * Defaults to "Required for the selected compliance profile"
43
+ */
44
+ prioritySectionHeading?: string;
45
+ /**
46
+ * Heading text for the remaining signals section.
47
+ * Defaults to "Not required for the selected compliance profile"
48
+ */
49
+ remainingSectionHeading?: string;
50
+ /** Use Investigate handbook colors instead of Design System CSS variables */
51
+ useInvestigateColors?: boolean;
52
+ /**
53
+ * Enable collapsible sections inside all child cards.
54
+ * @default true
55
+ */
56
+ isCollapsible?: boolean;
57
+ /**
58
+ * Controlled collapsed state for all sections in all child cards.
59
+ * Used with isCollapsible to manage collapsed state externally.
60
+ */
61
+ areAllCollapsed?: boolean;
62
+ /**
63
+ * Callback fired when the collapse-all toggle changes in any child card.
64
+ */
65
+ onCollapseAll?: (areAllCollapsed: boolean) => void;
66
+ /**
67
+ * AI-powered recommendations data including analysis and per-protocol signals.
68
+ * When provided (and showRecommendations is not false), renders a RecommendationsSummary
69
+ * section above the signal cards.
70
+ */
71
+ recommendations?: RecommendationsData | null;
72
+ /**
73
+ * Whether recommendations data is still loading.
74
+ * When true, shows a skeleton/shimmer placeholder for the recommendations section.
75
+ */
76
+ recommendationsLoading?: boolean;
77
+ /**
78
+ * Whether to show the recommendations section.
79
+ * @default true
80
+ */
81
+ showRecommendations?: boolean;
82
+ /**
83
+ * Structured data for the CTA card in the recommendations section.
84
+ * The DS owns the layout; the consumer provides the content and click handler.
85
+ */
86
+ recommendationsCTA?: {
87
+ title: string;
88
+ description: string;
89
+ buttonLabel: string;
90
+ onClickCTA: () => void;
91
+ };
92
+ /**
93
+ * Callback when user clicks "See more details" on a status card.
94
+ * The consumer uses this to scroll to and expand the corresponding signal card.
95
+ */
96
+ onExpandSignalCard?: (signalType: string) => void;
97
+ /**
98
+ * Callback for the "Check another email" button in the header.
99
+ * When provided, renders a styled button with a sync icon and translated label.
100
+ * Only rendered when a checked email is found in the signal data.
101
+ */
102
+ onCheckAnotherEmail?: () => void;
103
+ /**
104
+ * Render prop for custom action area in the header.
105
+ * Overrides the default "Check another email" button when provided.
106
+ * Only rendered when a checked email is found in the signal data.
107
+ */
108
+ renderHeaderAction?: () => ReactNode;
109
+ /**
110
+ * Whether to show the "Powered by OnDMARC" branding in the header.
111
+ * @default true
112
+ */
113
+ showBranding?: boolean;
114
+ }
115
+
6
116
  /**
7
117
  * Common props shared by all signal card components. These cover layout options
8
118
  * that ultimately map to `SignalCardNormal`.
@@ -28,148 +138,159 @@ interface SignalCardSharedProps extends Omit<ComponentProps<'div'>, 'children' |
28
138
  onCollapseAll?: (areAllCollapsed: boolean) => void;
29
139
  }
30
140
 
141
+ /**
142
+ * Extended JMAP props for DMARC card including required extsecrep data
143
+ */
144
+ interface SignalCardDmarcJmapProps extends JmapProps {
145
+ extsecrep: {
146
+ dmarc?: DmarcProps;
147
+ dkim?: DkimProps | DkimProps[];
148
+ spf?: SpfProps;
149
+ };
150
+ }
31
151
  /**
32
152
  * Component props.
33
153
  */
34
- interface SignalCardGoogleYahooComplianceProps extends SignalCardSharedProps {
35
- /**
36
- * Domain name (currently not used but maintained for API compatibility)
37
- */
38
- domain?: string | null;
154
+ interface SignalCardDmarcProps extends SignalCardSharedProps {
39
155
  /**
40
- * JMAP extsecrep data containing authentication results
156
+ * JMAP email data containing DMARC, DKIM, SPF information
41
157
  */
42
- jmap?: JmapProps | null;
158
+ jmap: SignalCardDmarcJmapProps;
43
159
  /**
44
- * Investigate data with FCrDNS and EHLO check results
160
+ * Whether this is being used in domain analyzer mode
45
161
  */
46
- investigate?: InvestigateProps | null;
162
+ isDomainAnalyzer?: boolean;
47
163
  }
48
164
 
165
+ type SpfData = SpfProps;
49
166
  /**
50
167
  * Component props.
51
168
  */
52
- interface SignalCardUrlsProps extends SignalCardSharedProps {
53
- /**
54
- * Investigate data containing extracted URLs
55
- */
56
- investigate?: InvestigateProps | null;
169
+ interface SignalCardSpfProps extends SignalCardSharedProps {
170
+ /** JMAP email data containing SPF information */
171
+ jmap: {
172
+ extsecrep: {
173
+ spf?: SpfData;
174
+ };
175
+ };
57
176
  }
58
177
 
178
+ type DkimResult = DkimProps;
179
+ type DmarcResult$1 = DmarcProps | null;
59
180
  /**
60
- * External security report data structure
181
+ * Component props.
61
182
  */
62
- interface ExtsecrepData {
63
- /** SPF check data */
64
- spf?: SpfProps | null;
65
- /** DMARC policy data */
66
- dmarc?: DmarcProps | null;
67
- /** DKIM signature data - can be array or object */
68
- dkim?: DkimProps | DkimProps[] | null;
183
+ interface SignalCardDkimProps extends SignalCardSharedProps {
184
+ /** JMAP email data containing DKIM, DMARC information */
185
+ jmap: {
186
+ extsecrep: {
187
+ dkim?: DkimResult | DkimResult[] | null;
188
+ dmarc?: DmarcResult$1;
189
+ };
190
+ };
69
191
  }
192
+
70
193
  /**
71
194
  * Component props.
72
195
  */
73
- interface SignalCardAmpProps extends SignalCardSharedProps {
74
- /** JMAP data containing authentication information */
196
+ interface SignalCardFcrdnsProps extends SignalCardSharedProps {
197
+ /** JMAP data containing EHLO information */
75
198
  jmap: {
76
- /** External security report with SPF, DMARC, DKIM data */
77
- extsecrep: ExtsecrepData;
78
- /** From email address information */
79
- from?: {
80
- email?: string | null;
81
- } | null;
199
+ extsecrep: {
200
+ ehlo?: EhloProps;
201
+ };
202
+ };
203
+ /** Investigation data with FCrDNS and EHLO check results */
204
+ investigate?: {
205
+ fcrdns?: FcrdnsProps | null;
206
+ ehloCheck?: EhloCheckProps | null;
82
207
  };
83
208
  }
84
209
 
85
210
  /**
86
211
  * Component props.
87
212
  */
88
- interface SignalCardDnssecProps extends SignalCardSharedProps {
89
- /** JMAP data containing DNS security information */
90
- jmap?: {
91
- extsecrep?: {
92
- dnsSecurity?: DnsSecurityProps | null;
93
- } | null;
94
- } | null;
95
- /** Custom short description (overrides default based on result) */
96
- shortDescription?: ReactNode;
213
+ interface SignalCardTlsProps extends SignalCardSharedProps {
214
+ /** JMAP email data containing TLS information */
215
+ jmap: {
216
+ extsecrep: {
217
+ tls?: TlsProps;
218
+ };
219
+ };
97
220
  }
98
221
 
99
- type ExtsecrepThreatLevel = ExtsecrepProps;
100
- type FromInfo = {
101
- name?: string | null;
102
- email?: string | null;
222
+ type DmarcResult = {
223
+ status?: CardStatus | string | null;
224
+ errors?: string[] | null;
225
+ };
226
+ type DmarcData$1 = {
227
+ raw?: string | null;
228
+ result?: DmarcResult | null;
229
+ txtExtractedFrom?: string | null;
230
+ policyDomain?: string | null;
231
+ fromDomain?: string | null;
232
+ domainPublished?: string | null;
233
+ };
234
+ type Originator = {
235
+ domain?: string | null;
236
+ orgDomain?: string | null;
103
237
  } | null;
104
- /**
105
- * Component props.
106
- */
107
- interface SignalCardThreatInvProps extends SignalCardSharedProps {
108
- /** JMAP email data containing threat intelligence information */
238
+ interface SignalCardDmarcDomainProps extends SignalCardSharedProps {
109
239
  jmap: {
110
- extsecrep: ExtsecrepThreatLevel;
111
- from?: FromInfo;
240
+ extsecrep: {
241
+ dmarc: DmarcData$1;
242
+ originator?: Originator;
243
+ };
112
244
  };
113
- /** Whether this is being used in domain analyzer mode */
114
- isDomainAnalyzer?: boolean;
115
245
  }
116
246
 
117
- type SubdoReportEntry = {
247
+ /**
248
+ * SPF report item from the BIMI Checker API
249
+ */
250
+ interface SpfReportItem {
251
+ status?: string;
118
252
  message?: string;
119
253
  spfError?: string;
120
- raw?: string;
121
- value?: unknown;
122
- details?: unknown;
254
+ }
255
+ interface SpfDetails {
256
+ raw?: string | string[] | null;
257
+ status?: string | null;
258
+ txtExtractedFrom?: string | null;
259
+ report?: SpfReportItem[];
123
260
  [key: string]: unknown;
124
- };
261
+ }
125
262
  /**
126
- * Component props.
263
+ * Props for the SignalCardSpfDomain component.
264
+ *
265
+ * Simplified SPF Domain Card for BIMI Checker - shows only pass/fail status and raw SPF record.
127
266
  */
128
- interface SignalCardSubdoProps extends SignalCardSharedProps {
267
+ interface SignalCardSpfDomainProps extends SignalCardSharedProps {
129
268
  /**
130
- * JMAP data containing SPF subdomain takeover report
269
+ * JMAP data containing SPF authentication results
131
270
  */
132
271
  jmap?: {
133
272
  extsecrep?: {
134
- spf?: {
135
- domain?: string | null;
136
- report?: SubdoReportEntry[] | null;
137
- } | null;
138
- } | null;
139
- } | null;
140
- }
141
-
142
- /**
143
- * Component props.
144
- */
145
- interface SignalCardMtaStsProps extends SignalCardSharedProps {
146
- /** JMAP email data containing MTA-STS information */
147
- jmap?: {
148
- extsecrep?: {
149
- mta?: MtaProps | null;
273
+ spf?: SpfDetails | null;
150
274
  } | null;
151
275
  } | null;
152
- /** Domain to analyze */
153
- domain?: string;
154
276
  }
155
277
 
156
278
  /**
157
279
  * Component props.
158
280
  */
159
- interface SignalCardBimiProps extends SignalCardSharedProps {
281
+ interface SignalCardSpfDomainAnalyzerProps extends SignalCardSharedProps {
160
282
  /**
161
- * JMAP data containing BIMI and DMARC information from the email security report.
283
+ * JMAP data containing SPF analysis results
162
284
  */
163
285
  jmap: {
164
286
  extsecrep: {
165
- bimi?: any;
166
- dmarc?: any;
287
+ spf: DomainAnalyzerSpfProps;
288
+ originator?: {
289
+ domain?: string | null;
290
+ orgDomain?: string | null;
291
+ } | null;
167
292
  };
168
293
  };
169
- /**
170
- * Optional callback invoked when the component mounts.
171
- */
172
- onComponentMount?: () => void;
173
294
  }
174
295
 
175
296
  /**
@@ -178,7 +299,7 @@ interface SignalCardBimiProps extends SignalCardSharedProps {
178
299
  */
179
300
  type ExtractionCaptionType = 'email' | 'dns' | 'dns-details' | 'policy' | 'email-details';
180
301
 
181
- type DmarcData$1 = {
302
+ type DmarcData = {
182
303
  domain?: string | null;
183
304
  } | null;
184
305
  /**
@@ -192,7 +313,7 @@ interface SignalCardDkimDomainAnalyzerProps extends SignalCardSharedProps {
192
313
  */
193
314
  jmap: {
194
315
  extsecrep: {
195
- dmarc?: DmarcData$1;
316
+ dmarc?: DmarcData;
196
317
  dkim?: DomainAnalyzerDkimProps;
197
318
  };
198
319
  };
@@ -201,266 +322,145 @@ interface SignalCardDkimDomainAnalyzerProps extends SignalCardSharedProps {
201
322
  /**
202
323
  * Component props.
203
324
  */
204
- interface SignalCardSpfDomainAnalyzerProps extends SignalCardSharedProps {
325
+ interface SignalCardBimiProps extends SignalCardSharedProps {
205
326
  /**
206
- * JMAP data containing SPF analysis results
327
+ * JMAP data containing BIMI and DMARC information from the email security report.
207
328
  */
208
329
  jmap: {
209
330
  extsecrep: {
210
- spf: DomainAnalyzerSpfProps;
211
- originator?: {
212
- domain?: string | null;
213
- orgDomain?: string | null;
214
- } | null;
331
+ bimi?: any;
332
+ dmarc?: any;
215
333
  };
216
334
  };
335
+ /**
336
+ * Optional callback invoked when the component mounts.
337
+ */
338
+ onComponentMount?: () => void;
217
339
  }
218
340
 
219
341
  /**
220
- * SPF report item from the BIMI Checker API
342
+ * Component props.
221
343
  */
222
- interface SpfReportItem {
223
- status?: string;
344
+ interface SignalCardMtaStsProps extends SignalCardSharedProps {
345
+ /** JMAP email data containing MTA-STS information */
346
+ jmap?: {
347
+ extsecrep?: {
348
+ mta?: MtaProps | null;
349
+ } | null;
350
+ } | null;
351
+ /** Domain to analyze */
352
+ domain?: string;
353
+ }
354
+
355
+ type SubdoReportEntry = {
224
356
  message?: string;
225
357
  spfError?: string;
226
- }
227
- interface SpfDetails {
228
- raw?: string | string[] | null;
229
- status?: string | null;
230
- txtExtractedFrom?: string | null;
231
- report?: SpfReportItem[];
358
+ raw?: string;
359
+ value?: unknown;
360
+ details?: unknown;
232
361
  [key: string]: unknown;
233
- }
362
+ };
234
363
  /**
235
- * Props for the SignalCardSpfDomain component.
236
- *
237
- * Simplified SPF Domain Card for BIMI Checker - shows only pass/fail status and raw SPF record.
364
+ * Component props.
238
365
  */
239
- interface SignalCardSpfDomainProps extends SignalCardSharedProps {
366
+ interface SignalCardSubdoProps extends SignalCardSharedProps {
240
367
  /**
241
- * JMAP data containing SPF authentication results
368
+ * JMAP data containing SPF subdomain takeover report
242
369
  */
243
370
  jmap?: {
244
371
  extsecrep?: {
245
- spf?: SpfDetails | null;
372
+ spf?: {
373
+ domain?: string | null;
374
+ report?: SubdoReportEntry[] | null;
375
+ } | null;
246
376
  } | null;
247
377
  } | null;
248
378
  }
249
379
 
250
- type DmarcResult$1 = {
251
- status?: CardStatus | string | null;
252
- errors?: string[] | null;
253
- };
254
- type DmarcData = {
255
- raw?: string | null;
256
- result?: DmarcResult$1 | null;
257
- txtExtractedFrom?: string | null;
258
- policyDomain?: string | null;
259
- fromDomain?: string | null;
260
- domainPublished?: string | null;
261
- };
262
- type Originator = {
263
- domain?: string | null;
264
- orgDomain?: string | null;
380
+ type ExtsecrepThreatLevel = ExtsecrepProps;
381
+ type FromInfo = {
382
+ name?: string | null;
383
+ email?: string | null;
265
384
  } | null;
266
- interface SignalCardDmarcDomainProps extends SignalCardSharedProps {
267
- jmap: {
268
- extsecrep: {
269
- dmarc: DmarcData;
270
- originator?: Originator;
271
- };
272
- };
273
- }
274
-
275
385
  /**
276
386
  * Component props.
277
387
  */
278
- interface SignalCardTlsProps extends SignalCardSharedProps {
279
- /** JMAP email data containing TLS information */
388
+ interface SignalCardThreatInvProps extends SignalCardSharedProps {
389
+ /** JMAP email data containing threat intelligence information */
280
390
  jmap: {
281
- extsecrep: {
282
- tls?: TlsProps;
283
- };
391
+ extsecrep: ExtsecrepThreatLevel;
392
+ from?: FromInfo;
284
393
  };
394
+ /** Whether this is being used in domain analyzer mode */
395
+ isDomainAnalyzer?: boolean;
285
396
  }
286
397
 
287
398
  /**
288
399
  * Component props.
289
400
  */
290
- interface SignalCardFcrdnsProps extends SignalCardSharedProps {
291
- /** JMAP data containing EHLO information */
292
- jmap: {
293
- extsecrep: {
294
- ehlo?: EhloProps;
295
- };
296
- };
297
- /** Investigation data with FCrDNS and EHLO check results */
298
- investigate?: {
299
- fcrdns?: FcrdnsProps | null;
300
- ehloCheck?: EhloCheckProps | null;
301
- };
401
+ interface SignalCardDnssecProps extends SignalCardSharedProps {
402
+ /** JMAP data containing DNS security information */
403
+ jmap?: {
404
+ extsecrep?: {
405
+ dnsSecurity?: DnsSecurityProps | null;
406
+ } | null;
407
+ } | null;
408
+ /** Custom short description (overrides default based on result) */
409
+ shortDescription?: ReactNode;
302
410
  }
303
411
 
304
- type DkimResult = DkimProps;
305
- type DmarcResult = DmarcProps | null;
306
412
  /**
307
- * Component props.
413
+ * External security report data structure
308
414
  */
309
- interface SignalCardDkimProps extends SignalCardSharedProps {
310
- /** JMAP email data containing DKIM, DMARC information */
311
- jmap: {
312
- extsecrep: {
313
- dkim?: DkimResult | DkimResult[] | null;
314
- dmarc?: DmarcResult;
315
- };
316
- };
415
+ interface ExtsecrepData {
416
+ /** SPF check data */
417
+ spf?: SpfProps | null;
418
+ /** DMARC policy data */
419
+ dmarc?: DmarcProps | null;
420
+ /** DKIM signature data - can be array or object */
421
+ dkim?: DkimProps | DkimProps[] | null;
317
422
  }
318
-
319
- type SpfData = SpfProps;
320
423
  /**
321
424
  * Component props.
322
425
  */
323
- interface SignalCardSpfProps extends SignalCardSharedProps {
324
- /** JMAP email data containing SPF information */
426
+ interface SignalCardAmpProps extends SignalCardSharedProps {
427
+ /** JMAP data containing authentication information */
325
428
  jmap: {
326
- extsecrep: {
327
- spf?: SpfData;
328
- };
429
+ /** External security report with SPF, DMARC, DKIM data */
430
+ extsecrep: ExtsecrepData;
431
+ /** From email address information */
432
+ from?: {
433
+ email?: string | null;
434
+ } | null;
329
435
  };
330
436
  }
331
437
 
332
- /**
333
- * Extended JMAP props for DMARC card including required extsecrep data
334
- */
335
- interface SignalCardDmarcJmapProps extends JmapProps {
336
- extsecrep: {
337
- dmarc?: DmarcProps;
338
- dkim?: DkimProps | DkimProps[];
339
- spf?: SpfProps;
340
- };
341
- }
342
438
  /**
343
439
  * Component props.
344
440
  */
345
- interface SignalCardDmarcProps extends SignalCardSharedProps {
346
- /**
347
- * JMAP email data containing DMARC, DKIM, SPF information
348
- */
349
- jmap: SignalCardDmarcJmapProps;
441
+ interface SignalCardUrlsProps extends SignalCardSharedProps {
350
442
  /**
351
- * Whether this is being used in domain analyzer mode
443
+ * Investigate data containing extracted URLs
352
444
  */
353
- isDomainAnalyzer?: boolean;
445
+ investigate?: InvestigateProps | null;
354
446
  }
355
447
 
356
- type SignalData = {
357
- signalType: string;
358
- jmap?: {
359
- extsecrep?: Record<string, any>;
360
- [key: string]: unknown;
361
- };
362
- shortDescription?: unknown;
363
- [key: string]: unknown;
364
- };
365
- type ErrorLike = {
366
- name?: string;
367
- message?: string;
368
- stack?: string;
369
- };
370
- type CardEnabledOverrides = Record<string, boolean | undefined>;
371
- interface SignalCardListProps extends Omit<ComponentProps<'div'>, 'children'> {
372
- /** Array of signal data objects containing DMARC, DKIM, SPF information */
373
- signals?: SignalData[];
374
- /** Error object to display if signal loading fails */
375
- error?: ErrorLike | null;
376
- /** Map of signal types to enabled/disabled state */
377
- isCardEnabledMap?: CardEnabledOverrides;
378
- /** Signal types to display in the priority section (shown first). Defaults to DMARC, DKIM, SPF */
379
- prioritySignalTypes?: string[];
380
- /** Initial selected signal type for external selection control */
381
- initialSelectedSignalType?: string | null;
382
- /** Callback when a signal card is selected */
383
- onSelectSignalType?: (signalType: string) => void;
384
- /** Custom header renderer for adding content at the top of each card, after the title */
385
- renderCardHeader?: (signal: SignalData) => React.ReactNode;
386
- /** Override the promo banner button href on all cards (e.g. to add UTM parameters). Only used when renderCardHeader is not provided. Defaults to the OnDMARC signup URL (`https://iam.redsift.cloud/signup?redirectapp=cloud&product=ondmarc`). */
387
- cardPromoHref?: string;
388
- /** Custom footer renderer for adding content at the bottom of each card */
389
- renderCardFooter?: (signal: SignalData) => React.ReactNode;
390
- /**
391
- * Heading text for the priority signals section.
392
- * Defaults to "Required for the selected compliance profile"
393
- */
394
- prioritySectionHeading?: string;
395
- /**
396
- * Heading text for the remaining signals section.
397
- * Defaults to "Not required for the selected compliance profile"
398
- */
399
- remainingSectionHeading?: string;
400
- /** Use Investigate handbook colors instead of Design System CSS variables */
401
- useInvestigateColors?: boolean;
402
- /**
403
- * Enable collapsible sections inside all child cards.
404
- * @default true
405
- */
406
- isCollapsible?: boolean;
407
- /**
408
- * Controlled collapsed state for all sections in all child cards.
409
- * Used with isCollapsible to manage collapsed state externally.
410
- */
411
- areAllCollapsed?: boolean;
412
- /**
413
- * Callback fired when the collapse-all toggle changes in any child card.
414
- */
415
- onCollapseAll?: (areAllCollapsed: boolean) => void;
416
- /**
417
- * AI-powered recommendations data including analysis and per-protocol signals.
418
- * When provided (and showRecommendations is not false), renders a RecommendationsSummary
419
- * section above the signal cards.
420
- */
421
- recommendations?: RecommendationsData | null;
422
- /**
423
- * Whether recommendations data is still loading.
424
- * When true, shows a skeleton/shimmer placeholder for the recommendations section.
425
- */
426
- recommendationsLoading?: boolean;
427
- /**
428
- * Whether to show the recommendations section.
429
- * @default true
430
- */
431
- showRecommendations?: boolean;
432
- /**
433
- * Structured data for the CTA card in the recommendations section.
434
- * The DS owns the layout; the consumer provides the content and click handler.
435
- */
436
- recommendationsCTA?: {
437
- title: string;
438
- description: string;
439
- buttonLabel: string;
440
- onClickCTA: () => void;
441
- };
442
- /**
443
- * Callback when user clicks "See more details" on a status card.
444
- * The consumer uses this to scroll to and expand the corresponding signal card.
445
- */
446
- onExpandSignalCard?: (signalType: string) => void;
448
+ /**
449
+ * Component props.
450
+ */
451
+ interface SignalCardGoogleYahooComplianceProps extends SignalCardSharedProps {
447
452
  /**
448
- * Callback for the "Check another email" button in the header.
449
- * When provided, renders a styled button with a sync icon and translated label.
450
- * Only rendered when a checked email is found in the signal data.
453
+ * Domain name (currently not used but maintained for API compatibility)
451
454
  */
452
- onCheckAnotherEmail?: () => void;
455
+ domain?: string | null;
453
456
  /**
454
- * Render prop for custom action area in the header.
455
- * Overrides the default "Check another email" button when provided.
456
- * Only rendered when a checked email is found in the signal data.
457
+ * JMAP extsecrep data containing authentication results
457
458
  */
458
- renderHeaderAction?: () => ReactNode;
459
+ jmap?: JmapProps | null;
459
460
  /**
460
- * Whether to show the "Powered by OnDMARC" branding in the header.
461
- * @default true
461
+ * Investigate data with FCrDNS and EHLO check results
462
462
  */
463
- showBranding?: boolean;
463
+ investigate?: InvestigateProps | null;
464
464
  }
465
465
 
466
466
  /**