Skip to content
This repository was archived by the owner on Nov 17, 2025. It is now read-only.

Commit 5cb68ed

Browse files
feat: Implement logo size and visibility plan
- Add logo display to CompanyCard. - Increase ProductCard logo size. - Update company data with logoUrl. - Improve logo styling. - Update pages using CompanyCard.
1 parent 29d8c0d commit 5cb68ed

8 files changed

Lines changed: 94 additions & 47 deletions

File tree

src/components/CompanyCard.tsx

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ interface CompanyCardProps {
1010
name: string;
1111
description: string;
1212
website?: string;
13+
logoUrl?: string;
1314
products: Product[];
1415
}
1516

16-
const CompanyCard = ({ name, description, website, products }: CompanyCardProps) => {
17+
const CompanyCard = ({ name, description, website, logoUrl, products }: CompanyCardProps) => {
1718
const [expanded, setExpanded] = useState(false);
1819

1920
const toggleExpanded = () => setExpanded(!expanded);
@@ -22,24 +23,40 @@ const CompanyCard = ({ name, description, website, products }: CompanyCardProps)
2223
<Card className="mb-4 w-full border-[#00A6D6]/10 hover:shadow-md transition-shadow">
2324
<CardHeader className="pb-3">
2425
<div className="flex justify-between items-start">
25-
<div className="flex-1">
26-
<div className="flex items-center gap-2 mb-1">
27-
<h3 className="text-xl font-bold">{name}</h3>
28-
{website && (
29-
<a
30-
href={website}
31-
target="_blank"
32-
rel="noopener noreferrer"
33-
className="text-[#00A6D6] hover:text-[#00A6D6]/80"
34-
>
35-
<ExternalLink className="h-4 w-4" />
36-
</a>
37-
)}
26+
<div className="flex items-start gap-4 flex-1">
27+
{/* Company Logo */}
28+
<div className="w-16 h-16 bg-gray-50 rounded-lg flex items-center justify-center flex-shrink-0 border">
29+
<img
30+
src={logoUrl || "/placeholder.svg"}
31+
alt={`${name} logo`}
32+
className="w-12 h-12 object-contain"
33+
onError={(e) => {
34+
const target = e.target as HTMLImageElement;
35+
target.src = "/placeholder.svg";
36+
}}
37+
/>
3838
</div>
39-
<p className="text-gray-600 text-sm">{description}</p>
40-
<div className="flex items-center mt-2 text-gray-500">
41-
<Package className="w-4 h-4 mr-1" />
42-
<span>{products.length} product{products.length !== 1 ? 's' : ''}</span>
39+
40+
{/* Company Info */}
41+
<div className="flex-1 min-w-0">
42+
<div className="flex items-center gap-2 mb-1">
43+
<h3 className="text-xl font-bold">{name}</h3>
44+
{website && (
45+
<a
46+
href={website}
47+
target="_blank"
48+
rel="noopener noreferrer"
49+
className="text-[#00A6D6] hover:text-[#00A6D6]/80"
50+
>
51+
<ExternalLink className="h-4 w-4" />
52+
</a>
53+
)}
54+
</div>
55+
<p className="text-gray-600 text-sm">{description}</p>
56+
<div className="flex items-center mt-2 text-gray-500">
57+
<Package className="w-4 h-4 mr-1" />
58+
<span>{products.length} product{products.length !== 1 ? 's' : ''}</span>
59+
</div>
4360
</div>
4461
</div>
4562
<button

src/components/ProductCard.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ const ProductCard = ({
5959
<CardHeader className="pb-3">
6060
<div className="flex items-start justify-between">
6161
<div className="flex items-center space-x-3 flex-1 min-w-0">
62-
<div className="w-12 h-12 bg-gray-100 rounded-lg flex items-center justify-center flex-shrink-0">
62+
<div className="w-16 h-16 bg-gray-100 rounded-lg flex items-center justify-center flex-shrink-0 border">
6363
<img
6464
src={logoUrl}
6565
alt={`${company} logo`}
66-
className="w-8 h-8 object-contain"
66+
className="w-12 h-12 object-contain"
6767
onError={(e) => {
6868
const target = e.target as HTMLImageElement;
6969
target.src = "/placeholder.svg";

src/data/companies/auto-contouring.ts

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,47 +8,53 @@ export const AUTO_CONTOURING_COMPANIES: CompanyDetails[] = [
88
"description": "Developers of AI-powered solutions for medical imaging and radiation oncology.",
99
"website": "https://www.ai-medical.ch/",
1010
"productIds": ["ai-medical-jazz"],
11-
"category": "Auto-Contouring"
11+
"category": "Auto-Contouring",
12+
"logoUrl": "/logos/ai-medical.png"
1213
},
1314
{
1415
"id": "carina-ai",
1516
"name": "Carina AI",
1617
"description": "Specialists in AI-driven solutions for radiation therapy planning.",
1718
"website": "https://carina.ai/",
1819
"productIds": ["carina-intcontour"],
19-
"category": "Auto-Contouring"
20+
"category": "Auto-Contouring",
21+
"logoUrl": "/logos/carina.jpg"
2022
},
2123
{
2224
"id": "coreline-soft",
2325
"name": "Coreline Soft Co",
2426
"description": "Medical imaging software company focused on AI-powered contouring solutions.",
2527
"website": "https://www.corelinesoft.com/",
2628
"productIds": ["coreline-aview-rt-acs"],
27-
"category": "Auto-Contouring"
29+
"category": "Auto-Contouring",
30+
"logoUrl": "/logos/coreline.jpg"
2831
},
2932
{
3033
"id": "everfortune-ai",
3134
"name": "Ever Fortune AI",
3235
"description": "AI company developing advanced solutions for radiation therapy.",
3336
"website": "https://www.everfortune.ai/",
3437
"productIds": ["everfortune-rt-suite"],
35-
"category": "Auto-Contouring"
38+
"category": "Auto-Contouring",
39+
"logoUrl": "/logos/ever-fortune.png"
3640
},
3741
{
3842
"id": "hura-imaging",
3943
"name": "Hura Imaging",
4044
"description": "Specialized in AI-driven segmentation and contouring for radiation therapy.",
4145
"website": "https://www.huraimaging.com/",
4246
"productIds": ["hura-dvtarget"],
43-
"category": "Auto-Contouring"
47+
"category": "Auto-Contouring",
48+
"logoUrl": "/logos/huraimaging.png"
4449
},
4550
{
4651
"id": "limbus-ai",
4752
"name": "Limbus AI",
4853
"description": "Specializing in AI-powered auto-contouring solutions for radiation therapy planning.",
4954
"website": "https://www.limbus.ai",
5055
"productIds": ["limbus-contour"],
51-
"category": "Auto-Contouring"
56+
"category": "Auto-Contouring",
57+
"logoUrl": "/logos/Limbus-ai.png"
5258
},
5359
{
5460
"id": "manteia",
@@ -60,70 +66,79 @@ export const AUTO_CONTOURING_COMPANIES: CompanyDetails[] = [
6066
"manteia-acculearning",
6167
"manteia-mozi"
6268
],
63-
"category": "Auto-Contouring"
69+
"category": "Auto-Contouring",
70+
"logoUrl": "/logos/manteia.png"
6471
},
6572
{
6673
"id": "mim-software",
6774
"name": "MIM Software",
6875
"description": "Provider of medical imaging software for radiation oncology and other specialties.",
6976
"website": "https://www.mimsoftware.com/",
7077
"productIds": ["mim-contour-protegeai"],
71-
"category": "Auto-Contouring"
78+
"category": "Auto-Contouring",
79+
"logoUrl": "/logos/mimsoftware.svg"
7280
},
7381
{
7482
"id": "mirada-medical",
7583
"name": "Mirada Medical",
7684
"description": "Leaders in medical imaging software solutions with focus on AI-powered contouring.",
7785
"website": "https://mirada-medical.com",
7886
"productIds": ["mirada-dlc"],
79-
"category": "Auto-Contouring"
87+
"category": "Auto-Contouring",
88+
"logoUrl": "/logos/mirada-medical.png"
8089
},
8190
{
8291
"id": "mvision-ai",
8392
"name": "MVision AI",
8493
"description": "Pioneers in cloud-based auto-segmentation solutions for radiation therapy.",
8594
"website": "https://www.mvision.ai",
8695
"productIds": ["mvision-ai-contouring"],
87-
"category": "Auto-Contouring"
96+
"category": "Auto-Contouring",
97+
"logoUrl": "/logos/mvision-ai.png"
8898
},
8999
{
90100
"id": "radformation",
91101
"name": "RadFormation",
92102
"description": "Developers of quality assurance and automation tools for radiation oncology.",
93103
"website": "https://radformation.com/",
94104
"productIds": ["radformation-autocontour"],
95-
"category": "Auto-Contouring"
105+
"category": "Auto-Contouring",
106+
"logoUrl": "/logos/radformation.svg"
96107
},
97108
{
98109
"id": "synaptiq",
99110
"name": "Synaptiq",
100111
"description": "AI company developing solutions for medical imaging and radiation therapy.",
101112
"website": "https://synaptiq.io/",
102113
"productIds": ["synaptiq-mediq-rt"],
103-
"category": "Auto-Contouring"
114+
"category": "Auto-Contouring",
115+
"logoUrl": "/logos/synaptiq.png"
104116
},
105117
{
106118
"id": "therapanacea",
107119
"name": "Therapanacea",
108120
"description": "Innovators in AI solutions for radiation oncology and medical imaging.",
109121
"website": "https://www.therapanacea.eu",
110122
"productIds": ["therapanacea-annotate", "therapanacea-adaptbox", "mr-box-synthetic"],
111-
"category": "Auto-Contouring"
123+
"category": "Auto-Contouring",
124+
"logoUrl": "/logos/therapanacea.png"
112125
},
113126
{
114127
"id": "vysioner",
115128
"name": "Vysioner",
116129
"description": "Provider of AI-powered solutions for cancer care.",
117130
"website": "https://www.vysioneer.com/",
118131
"productIds": ["vysioner-vbrain"],
119-
"category": "Auto-Contouring"
132+
"category": "Auto-Contouring",
133+
"logoUrl": "/logos/vysioner.png"
120134
},
121135
{
122136
"id": "wisdom-tech",
123137
"name": "Wisdom Tech",
124138
"description": "Chinese company specializing in AI solutions for radiation oncology.",
125139
"website": "http://www.wisdomtech.com.cn/",
126140
"productIds": ["wisdom-deep-contour"],
127-
"category": "Auto-Contouring"
141+
"category": "Auto-Contouring",
142+
"logoUrl": "/logos/wisdom-tech.png"
128143
}
129144
];

src/data/companies/medical-imaging.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ export const MEDICAL_IMAGING_COMPANIES: CompanyDetails[] = [
1414
"ge-dlip-ct",
1515
"ge-air-recon-dl-enhancement"
1616
],
17-
"category": "Medical Imaging"
17+
"category": "Medical Imaging",
18+
"logoUrl": "/logos/ge_healthcare.png"
1819
},
1920
{
2021
"id": "philips-healthcare",
@@ -31,7 +32,8 @@ export const MEDICAL_IMAGING_COMPANIES: CompanyDetails[] = [
3132
"philips-intellispace-ai-enhancement",
3233
"philips-smartdose-ct-enhancement"
3334
],
34-
"category": "Medical Imaging"
35+
"category": "Medical Imaging",
36+
"logoUrl": "/logos/philips.png"
3537
},
3638
{
3739
"id": "siemens-healthineers",
@@ -47,7 +49,8 @@ export const MEDICAL_IMAGING_COMPANIES: CompanyDetails[] = [
4749
"siemens-dual-energy-optimizer",
4850
"siemens-clara-train-image"
4951
],
50-
"category": "Medical Imaging"
52+
"category": "Medical Imaging",
53+
"logoUrl": "/logos/siemens.png"
5154
},
5255
{
5356
"id": "canon-medical",
@@ -59,7 +62,8 @@ export const MEDICAL_IMAGING_COMPANIES: CompanyDetails[] = [
5962
"canon-aice-mr",
6063
"canon-advanced-vis-ai"
6164
],
62-
"category": "Medical Imaging"
65+
"category": "Medical Imaging",
66+
"logoUrl": "/logos/canon.jpg"
6367
},
6468
{
6569
"id": "united-imaging",
@@ -72,6 +76,7 @@ export const MEDICAL_IMAGING_COMPANIES: CompanyDetails[] = [
7276
"united-ucs-ai",
7377
"united-uvision-ai"
7478
],
75-
"category": "Medical Imaging"
79+
"category": "Medical Imaging",
80+
"logoUrl": "/logos/unitedimaging.png"
7681
}
7782
];

src/data/companies/radiotherapy-equipment.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ export const RADIOTHERAPY_EQUIPMENT_COMPANIES: CompanyDetails[] = [
1010
"productIds": [
1111
"elekta-iris"
1212
],
13-
"category": "Radiotherapy Equipment"
13+
"category": "Radiotherapy Equipment",
14+
"logoUrl": "/logos/Elekta.png"
1415
},
1516
{
1617
"id": "accuray",
@@ -21,6 +22,7 @@ export const RADIOTHERAPY_EQUIPMENT_COMPANIES: CompanyDetails[] = [
2122
"accuray-clearrt",
2223
"accuray-synchrony-image"
2324
],
24-
"category": "Radiotherapy Equipment"
25+
"category": "Radiotherapy Equipment",
26+
"logoUrl": "/logos/accuray.png"
2527
}
2628
];

src/data/companies/specialized-solutions.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,17 @@ export const SPECIALIZED_SOLUTIONS_COMPANIES: CompanyDetails[] = [
88
"description": "Specialists in MRI-only radiotherapy planning solutions.",
99
"website": "https://spectronicmedical.com/",
1010
"productIds": ["spectronic-mriplus", "spectronic-mri-planner"],
11-
"category": "Specialized Solutions"
11+
"category": "Specialized Solutions",
12+
"logoUrl": "/logos/spectronic-medical.jpg"
1213
},
1314
{
1415
"id": "raysearch",
1516
"name": "RaySearch Laboratories",
1617
"description": "Developer of innovative software solutions for radiation therapy treatment planning.",
1718
"website": "https://www.raysearchlabs.com",
1819
"productIds": ["raysearch-raystation", "raysearch-raystation-deep-learning"],
19-
"category": "Specialized Solutions"
20+
"category": "Specialized Solutions",
21+
"logoUrl": "/logos/raystation.jpg"
2022
},
2123
{
2224
"id": "airs-medical",
@@ -27,7 +29,8 @@ export const SPECIALIZED_SOLUTIONS_COMPANIES: CompanyDetails[] = [
2729
"airs-swiftmr",
2830
"airs-ct-clarity"
2931
],
30-
"category": "Specialized Solutions"
32+
"category": "Specialized Solutions",
33+
"logoUrl": "/logos/airs.jpg"
3134
},
3235
{
3336
"id": "subtle-medical",
@@ -39,14 +42,16 @@ export const SPECIALIZED_SOLUTIONS_COMPANIES: CompanyDetails[] = [
3942
"subtle-pet",
4043
"subtle-gad"
4144
],
42-
"category": "Specialized Solutions"
45+
"category": "Specialized Solutions",
46+
"logoUrl": "/logos/SubtleMedical.jpg"
4347
},
4448
{
4549
"id": "pymedix",
4650
"name": "PyMedix",
4751
"description": "Specialists in medical imaging registration and analysis solutions.",
4852
"website": "https://pymedix.com/",
4953
"productIds": ["pymedix-registration"],
50-
"category": "Specialized Solutions"
54+
"category": "Specialized Solutions",
55+
"logoUrl": "/logos/pymedix.png"
5156
}
5257
];

src/pages/Companies.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
import React, { useState, useMemo } from 'react';
23
import { Input } from '@/components/ui/input';
34
import { Search, Building, ArrowDownAZ, ArrowDownZA } from 'lucide-react';
@@ -139,6 +140,7 @@ const Companies = () => {
139140
key={company.id}
140141
name={company.name}
141142
website={company.website}
143+
logoUrl={company.logoUrl}
142144
products={company.products as any[]}
143145
description={company.description}
144146
/>

src/types/company.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export interface CompanyDetails {
44
name: string;
55
description: string;
66
website?: string;
7+
logoUrl?: string;
78
productIds: string[];
89
category?: string; // Adding an optional category field
910
}

0 commit comments

Comments
 (0)