kyd-shared-badge 0.2.13 → 0.2.15
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/package.json
CHANGED
|
@@ -259,6 +259,16 @@ const SharedBadgeDisplay = ({ badgeData }: { badgeData: PublicBadgeData }) => {
|
|
|
259
259
|
/>
|
|
260
260
|
);
|
|
261
261
|
})()}
|
|
262
|
+
{screening_sources.sanctions_sublists && screening_sources.sanctions_sublists.length > 0 && (
|
|
263
|
+
<details className="mt-3">
|
|
264
|
+
<summary className={'cursor-pointer text-sm font-semibold'} style={{ color: 'var(--text-main)' }}>View all screened sub-lists</summary>
|
|
265
|
+
<ul className="mt-2 list-disc pl-5 text-sm" style={{ color: 'var(--text-secondary)' }}>
|
|
266
|
+
{screening_sources.sanctions_sublists.map((name, idx) => (
|
|
267
|
+
<li key={idx}>{name}</li>
|
|
268
|
+
))}
|
|
269
|
+
</ul>
|
|
270
|
+
</details>
|
|
271
|
+
)}
|
|
262
272
|
</div>
|
|
263
273
|
<div>
|
|
264
274
|
<h4 className={'text-xl font-bold mb-4'} style={{ color: 'var(--text-main)' }}>Country-specific Entity Affiliations</h4>
|
|
@@ -25,18 +25,32 @@ interface AppendixTableProps {
|
|
|
25
25
|
developerName: string;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
const SanctionsRow = ({ source, searchedAt, developerName }: { source: SanctionSource, searchedAt: string, developerName: string }) => (
|
|
29
|
-
<tr className={'transition-colors
|
|
30
|
-
<td className={'px-4 py-4 whitespace-nowrap text-sm font-medium'} style={{ color: 'var(--text-main)' }}>
|
|
28
|
+
const SanctionsRow = ({ source, searchedAt, developerName }: { source: SanctionSource & { sublists?: string[] }, searchedAt: string, developerName: string }) => (
|
|
29
|
+
<tr className={'transition-colors'} style={source.matched ? { backgroundColor: 'rgba(236,102,98,0.08)' } : undefined}>
|
|
30
|
+
<td className={'px-4 py-4 whitespace-nowrap align-top text-sm font-medium'} style={{ color: 'var(--text-main)' }}>
|
|
31
31
|
{source.issuingEntity}
|
|
32
32
|
</td>
|
|
33
|
-
<td className={'px-4 py-4 whitespace-normal text-sm'} style={{ color: 'var(--text-secondary)' }}>
|
|
34
|
-
|
|
33
|
+
<td className={'px-4 py-4 whitespace-normal align-top text-sm'} style={{ color: 'var(--text-secondary)' }}>
|
|
34
|
+
<div className="flex flex-col gap-2">
|
|
35
|
+
<div className="flex items-center justify-between gap-3">
|
|
36
|
+
<span>{source.listName}</span>
|
|
37
|
+
{source.sublists && source.sublists.length > 0 && (
|
|
38
|
+
<details className="ml-auto">
|
|
39
|
+
<summary className={'cursor-pointer text-xs font-semibold px-2 py-1 rounded-full'} style={{ backgroundColor: 'var(--icon-button-secondary)', color: 'var(--text-main)' }}>View sub-lists</summary>
|
|
40
|
+
<ul className="mt-2 text-xs list-disc pl-4 space-y-1" style={{ color: 'var(--text-secondary)' }}>
|
|
41
|
+
{source.sublists.map((sl, idx) => (
|
|
42
|
+
<li key={idx}>{sl}</li>
|
|
43
|
+
))}
|
|
44
|
+
</ul>
|
|
45
|
+
</details>
|
|
46
|
+
)}
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
35
49
|
</td>
|
|
36
|
-
<td className={'px-4 py-4 whitespace-nowrap text-sm'} style={{ color: 'var(--text-secondary)' }}>
|
|
50
|
+
<td className={'px-4 py-4 whitespace-nowrap align-top text-sm'} style={{ color: 'var(--text-secondary)' }}>
|
|
37
51
|
{searchedAt}
|
|
38
52
|
</td>
|
|
39
|
-
<td className={'px-4 py-4 whitespace-nowrap text-sm'} style={{ color: 'var(--text-secondary)' }}>
|
|
53
|
+
<td className={'px-4 py-4 whitespace-nowrap align-top text-sm'} style={{ color: 'var(--text-secondary)' }}>
|
|
40
54
|
{source.matched ? (
|
|
41
55
|
<span className={'px-2 inline-flex text-xs leading-5 font-semibold rounded-full'} style={{ backgroundColor: 'rgba(236,102,98,0.2)', color: 'var(--text-main)' }}>
|
|
42
56
|
Match
|
|
@@ -47,7 +61,7 @@ const SanctionsRow = ({ source, searchedAt, developerName }: { source: SanctionS
|
|
|
47
61
|
</span>
|
|
48
62
|
)}
|
|
49
63
|
</td>
|
|
50
|
-
<td className={'px-4 py-4 text-sm whitespace-normal'} style={{ color: 'var(--text-secondary)' }}>
|
|
64
|
+
<td className={'px-4 py-4 text-sm whitespace-normal align-top'} style={{ color: 'var(--text-secondary)' }}>
|
|
51
65
|
{source.matched
|
|
52
66
|
? (<span>Exact or strong match for <strong style={{ color: 'var(--text-main)' }}>{developerName}</strong> was found on this list.</span>)
|
|
53
67
|
: (<span>No exact match for <strong style={{ color: 'var(--text-main)' }}>{developerName}</strong> was found on this list.</span>)}
|
|
@@ -60,18 +60,18 @@ export default function ProviderInsights({ platforms, insights }: ProviderInsigh
|
|
|
60
60
|
<h3 className={'font-semibold text-lg'} style={{ color: 'var(--text-main)' }}>{platform.name}</h3>
|
|
61
61
|
</div>
|
|
62
62
|
<div className="flex flex-col items-end gap-1">
|
|
63
|
-
|
|
63
|
+
{platform.url && (
|
|
64
64
|
<span className={'text-sm'} style={{ color: 'var(--text-secondary)' }}>
|
|
65
65
|
Profile:{' '}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
<a
|
|
67
|
+
href={platform.url}
|
|
68
|
+
target="_blank"
|
|
69
|
+
rel="noopener noreferrer"
|
|
70
70
|
className={'font-medium underline-offset-2 hover:underline'}
|
|
71
71
|
style={{ color: 'var(--icon-accent)' }}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
>
|
|
73
|
+
{platform.handle || 'View Profile'}
|
|
74
|
+
</a>
|
|
75
75
|
</span>
|
|
76
76
|
)}
|
|
77
77
|
{observedDate && (
|
package/src/types.ts
CHANGED
|
@@ -161,7 +161,8 @@ export interface AssessmentResult {
|
|
|
161
161
|
sources?: string[];
|
|
162
162
|
matches?: any[];
|
|
163
163
|
};
|
|
164
|
-
sanctions_sources_detailed?: { issuingEntity: string; listName: string; matched?: boolean }[];
|
|
164
|
+
sanctions_sources_detailed?: { issuingEntity: string; listName: string; matched?: boolean; sublists?: string[] }[];
|
|
165
|
+
sanctions_sublists?: string[];
|
|
165
166
|
};
|
|
166
167
|
optOutScreening?: boolean;
|
|
167
168
|
clientMetadata?: ClientMetadata;
|