kyd-shared-badge 0.2.0 → 0.2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kyd-shared-badge",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "private": false,
5
5
  "main": "./src/index.ts",
6
6
  "module": "./src/index.ts",
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { FiInfo } from 'react-icons/fi';
4
- import { IpRiskAnalysis, IpRiskAnalysisFinding } from '../types';
4
+ import { IpRiskAnalysis, IpRiskAnalysisFinding, IpRiskSections, IpRiskSection } from '../types';
5
5
 
6
6
  interface IpRiskAnalysisDisplayProps {
7
7
  ipRiskAnalysis?: IpRiskAnalysis;
@@ -19,6 +19,19 @@ const FindingRow = ({ finding }: { finding: IpRiskAnalysisFinding }) => (
19
19
  </div>
20
20
  );
21
21
 
22
+ const Section = ({ section }: { section: IpRiskSection }) => (
23
+ <div className="py-3">
24
+ <h4 className="text-lg font-semibold mb-2 text-neutral-900 dark:text-white">{section.title}</h4>
25
+ <div className="space-y-3">
26
+ {section.items.map((item, idx) => (
27
+ <div key={idx} className="">
28
+ <p className="font-medium text-neutral-800 dark:text-neutral-200">{item.label}:</p>
29
+ <p className="text-sm text-neutral-700 dark:text-neutral-300">{item.text}</p>
30
+ </div>
31
+ ))}
32
+ </div>
33
+ </div>
34
+ );
22
35
 
23
36
  const IpRiskAnalysisDisplay = ({ ipRiskAnalysis }: IpRiskAnalysisDisplayProps) => {
24
37
  if (!ipRiskAnalysis || !ipRiskAnalysis.checked || !ipRiskAnalysis.findings || ipRiskAnalysis.findings.length === 0) {
@@ -30,7 +43,17 @@ const IpRiskAnalysisDisplay = ({ ipRiskAnalysis }: IpRiskAnalysisDisplayProps) =
30
43
  );
31
44
  }
32
45
 
33
- const { findings = [] } = ipRiskAnalysis;
46
+ const { findings = [], sections } = ipRiskAnalysis as IpRiskAnalysis & { sections?: IpRiskSections };
47
+
48
+ if (sections) {
49
+ return (
50
+ <div className="mt-6 divide-y divide-neutral-200 dark:divide-neutral-700">
51
+ <Section section={sections.general} />
52
+ <Section section={sections.location} />
53
+ <Section section={sections.reputational} />
54
+ </div>
55
+ );
56
+ }
34
57
 
35
58
  return (
36
59
  <div className="mt-6">
@@ -39,8 +39,8 @@ const ReportHeader = ({ badgeId, developerName, updatedAt, score = 0, isPublic,
39
39
  style={isRecruiter ? { backgroundColor: 'var(--content-card-background)', borderColor: 'var(--icon-button-secondary)' } : undefined}
40
40
  >
41
41
  {/* Left Section */}
42
- <div className="flex items-center text-left md:text-center">
43
- <Image src={finalBadgeImageUrl} alt="KYD Badge" width={150} height={150} unoptimized />
42
+ <div className="flex items-center text-left md:text-center gap-5">
43
+ <Image src={finalBadgeImageUrl} alt="KYD Badge" width={100} height={100} unoptimized />
44
44
  <div className='flex flex-col'>
45
45
  <h1 className={isRecruiter ? 'font-bold text-lg' : 'font-bold text-lg text-neutral-900 dark:text-white'} style={isRecruiter ? { color: 'var(--text-main)' } : undefined}>
46
46
  KYD Self-Check™
package/src/types.ts CHANGED
@@ -92,6 +92,24 @@ export interface IpRiskAnalysisFinding {
92
92
  implication: string;
93
93
  }
94
94
 
95
+ export type IpRiskPhase = 'NO_MATCH' | 'POSSIBLE_MATCH' | 'POSITIVE_MATCH';
96
+
97
+ export interface IpRiskSectionItem {
98
+ label: string;
99
+ text: string;
100
+ }
101
+
102
+ export interface IpRiskSection {
103
+ title: string;
104
+ items: IpRiskSectionItem[];
105
+ }
106
+
107
+ export interface IpRiskSections {
108
+ general: IpRiskSection;
109
+ location: IpRiskSection;
110
+ reputational: IpRiskSection;
111
+ }
112
+
95
113
  export interface IpRiskAnalysis {
96
114
  checked: boolean;
97
115
  findings: IpRiskAnalysisFinding[];
@@ -103,6 +121,9 @@ export interface IpRiskAnalysis {
103
121
  impossible_travel_events?: string[];
104
122
  anomalous_geo_logins?: string[];
105
123
  };
124
+ phase?: IpRiskPhase;
125
+ sections?: IpRiskSections;
126
+ countries?: string[];
106
127
  }
107
128
 
108
129
  export interface AssessmentResult {