Health page creation

This commit is contained in:
mukesh13
2025-08-12 11:50:37 +05:30
parent fcffef2883
commit 55b03ef145
62 changed files with 941 additions and 201 deletions

View File

@ -370,14 +370,32 @@ const Header = () => {
</li>
</ul>
</li>
<li>
<li className="relative group">
<Link
href="/#"
href="/health"
className="font-semibold text-lg py-2 hover:text-teal-700 transition-colors"
style={{ color: '#2a6564' }}
>
Health
</Link>
<ul className="absolute top-full left-0 bg-white shadow-lg rounded-md py-2 w-64 opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-300 z-50 border border-gray-100">
<li>
<Link
href="/health/rare-disorders"
className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 hover:text-teal-600"
>
Rare Disorders
</Link>
</li>
<li>
<Link
href="/health/oncology"
className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 hover:text-teal-600"
>
Oncology
</Link>
</li>
</ul>
</li>
<li className="relative group">
<Link

View File

@ -0,0 +1,56 @@
// components/shared/TitleBar.jsx
import React from 'react';
import Link from 'next/link';
const DNATitleBar = ({ title, desc, breadcrumbs, backgroundImage = "/images/bredcrumb.jpg" }) => {
return (
<section
className="relative bg-cover bg-center py-4 sm:py-6 h-auto sm:h-32 md:h-40 lg:h-[10rem] min-h-[120px] sm:min-h-[140px]"
style={{ backgroundImage: `url('${backgroundImage}')` }}
>
{/* Breadcrumb */}
<div className="relative z-10 mb-6 sm:mb-5 pt-2 sm:pt-0 sm:-mt-3 lg:-mt-3">
<div className="container mx-auto max-w-none px-4">
<nav className="flex flex-wrap items-center gap-1 sm:gap-2 text-xs sm:text-sm lg:text-sm">
{breadcrumbs.map((crumb, index) => (
<React.Fragment key={index}>
{crumb.current ? (
<span className="text-white whitespace-nowrap">
{crumb.label}
</span>
) : (
<Link
href={crumb.href}
className="text-white hover:text-yellow-400 underline whitespace-nowrap"
>
{crumb.label}
</Link>
)}
{index < breadcrumbs.length - 1 && (
<span className="text-white flex-shrink-0">
<svg className="w-3 h-3" fill="currentColor" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
</svg>
</span>
)}
</React.Fragment>
))}
</nav>
</div>
</div>
{/* Page Title */}
<div className="relative z-10 text-center pb-2 sm:pb-0 sm:-mt-2 lg:mt-2">
<h1 className="text-base sm:text-xl md:text-2xl lg:text-3xl xl:text-4xl font-bold text-white mb-2 px-4 leading-tight">
{title}
</h1>
<h3 className="text-base sm:text-xl md:text-2xl lg:text-3xl xl:text-2xl font-bold text-white mb-2 px-4 leading-tight">
{desc}
</h3>
<div className="w-12 sm:w-14 md:w-16 lg:w-16 h-1 bg-yellow-400 mx-auto"></div>
</div>
</section>
);
};
export default DNATitleBar;

View File

@ -5,7 +5,7 @@ import Link from 'next/link';
const TitleBar = ({ title, desc, breadcrumbs, backgroundImage = "/images/bredcrumb.jpg" }) => {
return (
<section
className="relative bg-cover bg-center py-4 sm:py-6 h-auto sm:h-32 md:h-40 lg:h-[12rem] min-h-[120px] sm:min-h-[140px]"
className="relative bg-cover bg-center py-4 sm:py-6 h-auto sm:h-32 md:h-40 lg:h-24 min-h-[120px] sm:min-h-[140px]"
style={{ backgroundImage: `url('${backgroundImage}')` }}
>
{/* Breadcrumb */}

View File

@ -1,4 +1,4 @@
import TitleBar from '../../../components/shared/TitleBar';
import DNATitleBar from '../../../components/shared/DNATitleBar';
import AmpliconIntroduction from './components/AmpliconIntroduction';
import AmpliconAdvantages from './components/AmpliconAdvantages';
import AmpliconApplications from './components/AmpliconApplications';
@ -15,7 +15,7 @@ export default function AmpliconSequencingPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="Amplicon Sequencing (16S/18S/ITS)"
desc="Explore Genetic Diversity at the Molecular Level"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
import PageLayout from '../../components/Layout/PageLayout';
import TitleBar from '../../components/shared/TitleBar';
import DNATitleBar from '../../components/shared/DNATitleBar';
import EnrichmentIntroduction from './components/EnrichmentIntroduction';
import EnrichmentAdvantages from './components/EnrichmentAdvantages';
import EnrichmentSpecifications from './components/EnrichmentSpecifications';
@ -14,7 +14,7 @@ export default function EnrichmentSequencingPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="Enrichment Sequencing"
desc="Enriched Genome, Enriched Insights"
breadcrumbs={breadcrumbs}

View File

@ -1,4 +1,4 @@
import TitleBar from '../../../components/shared/TitleBar';
import DNATitleBar from '../../../components/shared/DNATitleBar';
import TargetedIntroduction from './components/TargetedIntroduction';
import TargetedAdvantages from './components/TargetedAdvantages';
import TargetedApplications from './components/TargetedApplications';
@ -15,7 +15,7 @@ export default function TargetedSequencingPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="Targeted DNA Sequencing"
desc="Pinpoint Precision for Your Genetic Insights"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
// app/dna-sequencing/enrichment-sequencing/whole-exome/page.js
import TitleBar from '../../../components/shared/TitleBar';
import DNATitleBar from '../../../components/shared/DNATitleBar';
import ExomeIntroduction from './components/ExomeIntroduction';
import ExomeAdvantages from './components/ExomeAdvantages';
import ExomeApplications from './components/ExomeApplications';
@ -17,7 +17,7 @@ export default function WholeExomeSequencingPage() {
return (
<PageLayout fixedHeader={true}>
<div className="page-wrapper">
<TitleBar
<DNATitleBar
title="Whole Exome Sequencing"
desc="Focused Insights, Comprehensive Impact"
breadcrumbs={breadcrumbs}

View File

@ -1,4 +1,4 @@
import TitleBar from '../../../components/shared/TitleBar';
import DNATitleBar from '../../../components/shared/DNATitleBar';
import ATACIntroduction from './components/ATACIntroduction';
import ATACAdvantages from './components/ATACAdvantages';
import ATACBioinformatics from './components/ATACBioinformatics';
@ -16,7 +16,7 @@ export default function ATACSequencingPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="ATAC (Assay for Transposase-Accessible Chromatin) Sequencing"
desc="Chromatin for Gene Regulation Insights"
breadcrumbs={breadcrumbs}

View File

@ -1,4 +1,4 @@
import TitleBar from '../../../components/shared/TitleBar';
import DNATitleBar from '../../../components/shared/DNATitleBar';
import ChIPIntroduction from './components/ChIPIntroduction';
import ChIPAdvantages from './components/ChIPAdvantages';
import ChIPBioinformatics from './components/ChIPBioinformatics';
@ -16,7 +16,7 @@ export default function ChIPSequencingPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="ChIP (Chromatin immunoprecipitation) Sequencing"
desc="Dissecting Gene Regulation with ChIP-Seq"
breadcrumbs={breadcrumbs}

View File

@ -1,4 +1,4 @@
import TitleBar from '../../components/shared/TitleBar';
import DNATitleBar from '../../components/shared/DNATitleBar';
import EpigenomicsIntroduction from './components/EpigenomicsIntroduction';
import EpigenomicsAdvantages from './components/EpigenomicsAdvantages';
import EpigenomicsSpecifications from './components/EpigenomicsSpecifications';
@ -14,7 +14,7 @@ export default function EpigenomicsSequencingPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="Epigenomics Sequencing"
desc="Explore Cellular Memory"
breadcrumbs={breadcrumbs}

View File

@ -1,4 +1,4 @@
import TitleBar from '../../../components/shared/TitleBar';
import DNATitleBar from '../../../components/shared/DNATitleBar';
import WGBSIntroduction from './components/WGBSIntroduction';
import WGBSAdvantages from './components/WGBSAdvantages';
import WGBSBioinformatics from './components/WGBSBioinformatics';
@ -16,7 +16,7 @@ export default function WGBSPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="Whole Genome Bisulphite Sequencing (WGBS)"
desc="Comprehensive DNA Methylation Profiling"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
// app/dna-sequencing/genome-mapping/hi-c-mapping/page.js
import TitleBar from '../../../components/shared/TitleBar';
import DNATitleBar from '../../../components/shared/DNATitleBar';
import HiCMappingIntroduction from './components/HiCMappingIntroduction';
import HiCMappingAdvantages from './components/HiCMappingAdvantages';
import HiCMappingApplications from './components/HiCMappingApplications';
@ -39,7 +39,7 @@ export default function HiCMappingPage() {
return (
<PageLayout fixedHeader={true}>
{/* Title Bar */}
<TitleBar
<DNATitleBar
title="High-throughput Chromosome Conformation Capture (Hi-C) Mapping"
desc="Unravel the 3D Genome"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
// app/dna-sequencing/genome-mapping/optical-mapping/page.js
import TitleBar from '../../../components/shared/TitleBar';
import DNATitleBar from '../../../components/shared/DNATitleBar';
import OpticalMappingIntroduction from './components/OpticalMappingIntroduction';
import OpticalMappingAdvantages from './components/OpticalMappingAdvantages';
import OpticalMappingApplications from './components/OpticalMappingApplications';
@ -39,7 +39,7 @@ export default function OpticalMappingPage() {
return (
<PageLayout fixedHeader={true}>
{/* Title Bar */}
<TitleBar
<DNATitleBar
title="Optical Mapping"
desc="Dissecting Gene Regulation with Advanced Optical Mapping"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
// app/dna-sequencing/genome-mapping/page.js
import TitleBar from '../../components/shared/TitleBar';
import DNATitleBar from '../../components/shared/DNATitleBar';
import GenomeMappingIntroduction from './components/GenomeMappingIntroduction';
import GenomeMappingAdvantages from './components/GenomeMappingAdvantages';
import GenomeMappingPipeline from './components/GenomeMappingPipeline';
@ -34,7 +34,7 @@ export default function GenomeMappingPage() {
return (
<PageLayout fixedHeader={true}>
{/* Title Bar */}
<TitleBar
<DNATitleBar
title="Genome Mapping"
desc="Unlocking Genomic Secrets, One Map at a Time"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
// app/dna-sequencing/snp-genotyping/page.js
import TitleBar from '../../components/shared/TitleBar';
import DNATitleBar from '../../components/shared/DNATitleBar';
import HybridIntroduction from './components/HybridIntroduction';
import HybridAdvantages from './components/HybridAdvantages';
// import HybridSequencingPipeline from './components/HybridSequencingPipeline'
@ -35,7 +35,7 @@ export default function HybridGenomeSequencingPage() {
return (
<PageLayout fixedHeader={true}>
{/* Title Bar */}
<TitleBar
<DNATitleBar
title="Hybrid Genome Sequencing"
desc="Unifying Technologies for Deeper Genomic Clarity"
breadcrumbs={breadcrumbs}

View File

@ -1,4 +1,4 @@
import TitleBar from '../../components/shared/TitleBar';
import DNATitleBar from '../../components/shared/DNATitleBar';
import LongReadIntroduction from './components/LongReadIntroduction';
import LongReadComparison from './components/LongReadComparison';
import LongReadNanopore from './components/LongReadNanopore';
@ -17,7 +17,7 @@ export default function LongReadSequencingPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="Whole Genome Long Read Sequencing"
desc="Sequencing the Complete Genome, Long and Clear"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
// app/dna-sequencing/metagenomics-sequencing/page.js
import TitleBar from '../../components/shared/TitleBar';
import DNATitleBar from '../../components/shared/DNATitleBar';
import MetagenomicsIntroduction from './components/MetagenomicsIntroduction';
import MetagenomicsAdvantages from './components/MetagenomicsAdvantages';
import MetagenomicsApplications from './components/MetagenomicsApplications';
@ -35,7 +35,7 @@ export default function MetagenomicsSequencingPage() {
return (
<PageLayout fixedHeader={true}>
{/* Title Bar */}
<TitleBar
<DNATitleBar
title="Metagenomics Sequencing"
desc="Exploring Earth's Microbial Frontiers from Soil to Ocean"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
// app/dna-sequencing/microsatellites-ssr-str/page.js
import TitleBar from '../../components/shared/TitleBar';
import DNATitleBar from '../../components/shared/DNATitleBar';
import MicrosatellitesIntroduction from './components/MicrosatellitesIntroduction';
import MicrosatellitesAdvantages from './components/MicrosatellitesAdvantages';
import MicrosatellitesApplications from './components/MicrosatellitesApplications';
@ -34,7 +34,7 @@ export default function MicrosatellitesSSRSTRPage() {
return (
<PageLayout fixedHeader={true}>
{/* Title Bar */}
<TitleBar
<DNATitleBar
title="Microsatellites (SSR/STR)"
desc="Empowering Research with Microsatellite Markers"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
// app/dna-sequencing/single-cell-dna-sequencing/page.js
import TitleBar from '../../components/shared/TitleBar';
import DNATitleBar from '../../components/shared/DNATitleBar';
import SingleCellIntroduction from './components/SingleCellIntroduction';
import SingleCellAdvantages from './components/SingleCellAdvantages';
import SingleCellApplications from './components/SingleCellApplications';
@ -35,7 +35,7 @@ export default function SingleCellDNASequencingPage() {
return (
<PageLayout fixedHeader={true}>
{/* Title Bar */}
<TitleBar
<DNATitleBar
title="Single Cell DNA Sequencing"
desc="Mapping Genetic Diversity Cell by Cell"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
// app/dna-sequencing/snp-genotyping/page.js
import TitleBar from '../../components/shared/TitleBar';
import DNATitleBar from '../../components/shared/DNATitleBar';
import SNPIntroduction from './components/SNPIntroduction';
import SNPAdvantages from './components/SNPAdvantages';
import SNPApplications from './components/SNPApplications';
@ -16,7 +16,7 @@ export default function SNPGenotypingPage() {
return (
<PageLayout fixedHeader={true}>
<div className="page-wrapper">
<TitleBar
<DNATitleBar
title="SNP-based Genotyping"
desc="From Genomes to Traits: Precision through SNPs"
breadcrumbs={breadcrumbs}

View File

@ -1,4 +1,4 @@
import TitleBar from '../../../components/shared/TitleBar';
import DNATitleBar from '../../../components/shared/DNATitleBar';
import DenovoIntroduction from './components/DenovoIntroduction';
import DenovoAdvantages from './components/DenovoAdvantages';
import DenovoApplications from './components/DenovoApplications';
@ -16,7 +16,7 @@ export default function WholeGenomeDenovoPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="Whole Genome Denovo Sequencing"
desc="Unlocking Genomes, Discovering Diversity"
breadcrumbs={breadcrumbs}

View File

@ -1,5 +1,5 @@
// app/dna-sequencing/whole-genome-sequencing/page.js (Updated)
import TitleBar from '../../components/shared/TitleBar';
import DNATitleBar from '../../components/shared/DNATitleBar';
import WGSIntroduction from './components/WGSIntroduction';
import WGSAdvantages from './components/WGSAdvantages';
import WGSSpecifications from './components/WGSSpecifications';
@ -14,7 +14,7 @@ export default function WholeGenomeSequencingPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="Whole Genome Sequencing"
desc="Whole Genome, Whole Insights"
breadcrumbs={breadcrumbs}

View File

@ -1,4 +1,4 @@
import TitleBar from '../../../components/shared/TitleBar';
import DNATitleBar from '../../../components/shared/DNATitleBar';
import ResequencingIntroduction from './components/ResequencingIntroduction';
import ResequencingAdvantages from './components/ResequencingAdvantages';
import ResequencingApplications from './components/ResequencingApplications';
@ -16,7 +16,7 @@ export default function WholeGenomeResequencingPage() {
return (
<PageLayout fixedHeader={true}>
<TitleBar
<DNATitleBar
title="Whole Genome ReSequencing"
desc="Unraveling Genomic Complexity with Re-Sequencing"
breadcrumbs={breadcrumbs}

View File

@ -0,0 +1,71 @@
// components/ClinicalAreas.js
import Link from "next/link";
import Image from "next/image";
export default function ClinicalAreas() {
return (
<div className="mx-auto px-10 py-4">
{/* Heading */}
<h2 className="text-4xl font-bold text-gray-700 text-left pb-2 mb-4">
Precise Solutions for Clinical Areas
</h2>
{/* Subtext */}
<p className="text-gray-600 leading-relaxed text-base mb-8 max-w-3xl text-justify">
Empowering you with precise, tailored approaches to diagnostics and care
addressing the unique needs of each clinical area to improve patient outcomes.
</p>
{/* Cards */}
<div className="grid grid-cols-1 sm:grid-cols-2 gap-6">
{/* Rare Disorders */}
<Link href="/health/rare-disorders">
<div className="rounded-lg p-6 hover:shadow-sm transition-shadow cursor-pointer" style={{backgroundColor: '#f2fcfc'}}>
<div className="flex items-start gap-4">
{/* Icon */}
<div className="flex-shrink-0 mt-1">
<Image
src="/images/icons/disorder.png"
alt="Rare Disorders"
width={40}
height={40}
className="object-contain"
/>
</div>
<div className="flex-1">
<h3 className="text-lg font-semibold text-gray-900 mb-2">Rare Disorders</h3>
<p className="text-gray-500 text-sm leading-relaxed">
Advancing diagnostics and treatments for rare genetic conditions.
</p>
</div>
</div>
</div>
</Link>
{/* Oncology */}
<Link href="/health/oncology">
<div className="rounded-lg p-6 hover:shadow-sm transition-shadow cursor-pointer" style={{backgroundColor: '#f2fcfc'}}>
<div className="flex items-start gap-4">
{/* Icon */}
<div className="flex-shrink-0 mt-1">
<Image
src="/images/icons/oncology.png"
alt="Oncology"
width={40}
height={40}
className="object-contain"
/>
</div>
<div className="flex-1">
<h3 className="text-lg font-semibold text-gray-900 mb-2">Oncology</h3>
<p className="text-gray-500 text-sm leading-relaxed">
Revolutionizing cancer care with targeted therapies and early detection.
</p>
</div>
</div>
</div>
</Link>
</div>
</div>
);
}

View File

@ -0,0 +1,49 @@
// components/AboutHealth.js
import Image from "next/image";
import Link from "next/link";
export default function AboutHealth() {
return (
<div className="mx-auto px-10 pt-12">
{/* Title */}
<h1 className="text-4xl font-bold text-gray-700 text-left pb-2 mb-4">About Health</h1>
{/* Intro Section */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 items-center mb-12">
{/* Left Content */}
<div>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
At Operify Health, we believe every patient deserves answers that are not only
accurate but actionable. By harnessing the power of Next Generation Sequencing
(NGS), we transform patient samples into rich genomic insights that enable
clinicians and oncologists to make informed, personalized decisions. From rare
genetic disorders to complex oncological cases, our solutions help uncover what
traditional diagnostics often miss.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
Our strength lies in our multidisciplinary team of researchers, bioinformaticians,
and data scientists who use custom-built algorithms and cutting-edge analytics to
interpret genetic data with unmatched depth. Backed by curated scientific evidence
and real-world clinical findings, we deliver recommendations that are current,
relevant, and patient-focused.
</p>
<p className="text-gray-600 leading-relaxed text-base text-justify">
With every genome we decode, we move closer to truly personalized medicine
bridging data and care, science and life.
</p>
</div>
{/* Right Image */}
<div className="flex justify-center">
<Image
src="images/health/dna-placeholder.jpg" // Replace with your actual image path in /public
alt="DNA Strand"
width={500}
height={500}
className="rounded-lg object-cover"
/>
</div>
</div>
</div>
);
}

View File

@ -0,0 +1,41 @@
import React from 'react';
const HealthTitle = () => {
return (
<section
className="relative bg-cover bg-center py-6 h-24"
style={{ backgroundImage: "url('/images/bredcrumb.jpg')" }}
>
{/* Breadcrumb */}
<div className="relative z-10 mb-1 -mt-3">
<div className="container mx-auto max-w-none px-4">
<nav className="flex items-center space-x-2 text-sm">
<a href="/" className="text-white hover:text-yellow-400 underline">Home</a>
<span className="text-white">
<svg className="w-3 h-3" fill="currentColor" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
</svg>
</span>
<a href="/about-us" className="text-white hover:text-yellow-400 underline">Health</a>
{/* <span className="text-white">
<svg className="w-3 h-3" fill="currentColor" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
</svg>
</span>
<span className="text-white">Career</span> */}
</nav>
</div>
</div>
{/* Page Title */}
<div className="relative z-10 text-center -mt-2">
<h1 className="text-4xl md:text-4xl font-bold text-white mb-2">
About Health
</h1>
<div className="w-16 h-1 bg-yellow-400 mx-auto"></div>
</div>
</section>
);
};
export default HealthTitle;

View File

@ -0,0 +1,25 @@
export default function CancerKeyFeatures() {
const features = [
{ title: "Comprehensive Gene Coverage", desc: "Includes high- and moderate-risk genes such as BRCA1, BRCA2, TP53, MLH1, MSH2, APC, and others." },
{ title: "Germline Variant Detection", desc: "Accurately detects SNVs, Indels, and selected CNVs in genes associated with inherited cancer risk." },
{ title: "Family-Centered Testing", desc: "Supports cascade testing for at-risk relatives, enabling early detection and prevention." },
{ title: "Clinical Actionability", desc: "Provides insights that guide surveillance, preventive measures, and personalized treatment planning." },
{ title: "High Sensitivity & Specificity", desc: "Uses ≥100X sequencing depth with ≥90% Q30 base quality for reliable variant calling." },
{ title: "Expert Interpretation & Reporting", desc: "Variants classified using ACMG guidelines, backed by curated literature and clinical databases." },
{ title: "Genetic Counseling Support", desc: "Optional access to pre- and post-test counseling for patient education and informed decision-making." }
];
return (
<section className="p-10">
<h3 className="text-lg font-semibold mb-4">Key Features</h3>
<div className="grid md:grid-cols-2 gap-4">
{features.map((f, idx) => (
<div key={idx} className="border p-4 rounded-lg hover:shadow-lg transition-shadow">
<h4 className="font-semibold">{f.title}</h4>
<p className="text-gray-600">{f.desc}</p>
</div>
))}
</div>
</section>
);
}

View File

@ -0,0 +1,58 @@
export default function HereditaryCancerPanel() {
const features = [
{ title: "Comprehensive Gene Coverage", desc: "Includes high- and moderate-risk genes such as BRCA1, BRCA2, TP53, MLH1, MSH2, APC, and others." },
{ title: "Germline Variant Detection", desc: "Accurately detects SNVs, Indels, and selected CNVs in genes associated with inherited cancer risk." },
{ title: "Family-Centered Testing", desc: "Supports cascade testing for at-risk relatives, enabling early detection and prevention." },
{ title: "Clinical Actionability", desc: "Provides insights that guide surveillance, preventive measures, and personalized treatment planning." },
{ title: "High Sensitivity & Specificity", desc: "Uses ≥100X sequencing depth with ≥90% Q30 base quality for reliable variant calling." },
{ title: "Expert Interpretation & Reporting", desc: "Variants classified using ACMG guidelines, backed by curated literature and clinical databases." },
{ title: "Genetic Counseling Support", desc: "Optional access to pre- and post-test counseling for patient education and informed decision-making." }
];
return (
<section className="mx-auto px-10 pt-12">
<h2 className="text-3xl font-bold text-gray-700 text-left pb-2 mb-4">Operify Hereditary Cancer Panel</h2>
<div className="mb-8">
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
<strong>About 5-10% of all cancers are linked to inherited genetic mutations</strong>, often going
undetected until late stages or after multiple family members are affected.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
The Operify Hereditary Cancer Panel screens key high- and moderate-risk genes associated
with hereditary cancer syndromes like HBOC, Lynch Syndrome (LS), Li Fraumeni Syndrome (LFS),
Familial Adenomatous Polyposis (FAP), Cowden Syndrome (CS), Peutz-Jeghers Syndrome (PJS),
Neurofibromatosis (NF) etc.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
Early identification of germline mutations enables proactive clinical decisions, including
risk-reducing strategies, targeted surveillance, and family cascade testing.
</p>
<p className="text-gray-600 leading-relaxed text-base text-justify">
Studies show that genetic testing in hereditary cancer cases improves outcomes and informs
care for both patients and at-risk relatives.
</p>
</div>
<h3 className="text-2xl font-semibold text-gray-700 mb-4">Key Features</h3>
<div className="overflow-x-auto">
<table className="w-full border-collapse border border-gray-300 rounded-lg">
<thead>
<tr className="bg-teal-50">
<th className="border border-gray-300 px-3 py-2 text-left font-semibold text-teal-700">Feature</th>
<th className="border border-gray-300 px-3 py-2 text-left font-semibold text-teal-700">Description</th>
</tr>
</thead>
<tbody>
{features.map((feature, idx) => (
<tr key={idx} className="hover:bg-gray-50">
<td className="border border-gray-300 px-6 py-3 text-gray-700 font-medium">{feature.title}</td>
<td className="border border-gray-300 px-6 py-3 text-gray-600">{feature.desc}</td>
</tr>
))}
</tbody>
</table>
</div>
</section>
);
}

View File

@ -0,0 +1,31 @@
export default function OncologyIntro() {
return (
<section className="mx-auto px-10 pt-12">
<h1 className="text-4xl font-bold text-gray-700 text-left pb-2 mb-4">Oncology</h1>
<h2 className="text-2xl font-semibold text-gray-700 mb-4">Turning Complexity into Clarity</h2>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
Cancer is not a single diseaseit's a highly complex and dynamic group of disorders,
often driven by a multitude of genomic alterations. Despite advancements in treatment,
many patients still face uncertainty due to incomplete or delayed molecular diagnoses.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
At Operify Health, we recognize that behind every tumor is a unique genetic story waiting
to be told. Our precision oncology solutions utilize high-throughput Next Generation
Sequencing (NGS) to analyze both somatic and germline mutations—providing clinicians
with actionable insights that inform targeted therapies, immunotherapy decisions, and
hereditary cancer risk assessments.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
This genomic-driven approach is especially critical in advanced and treatment-resistant
cancers, where conventional methods often fall short. Studies have shown that integrating
broad-panel NGS into cancer care can impact clinical decision-making in up to 30% of cases,
leading to more personalized and effective treatment strategies.
</p>
<p className="text-gray-600 leading-relaxed text-base text-justify">
By combining cutting-edge sequencing, advanced bioinformatics, and curated clinical evidence,
Operify Health empowers oncologists to move from uncertainty to precision—ensuring every cancer
patient's care is as individualized as their diagnosis.
</p>
</section>
);
}

View File

@ -0,0 +1,41 @@
import React from 'react';
const OncologyTitle = () => {
return (
<section
className="relative bg-cover bg-center py-6 h-24"
style={{ backgroundImage: "url('/images/bredcrumb.jpg')" }}
>
{/* Breadcrumb */}
<div className="relative z-10 mb-1 -mt-3">
<div className="container mx-auto max-w-none px-4">
<nav className="flex items-center space-x-2 text-sm">
<a href="/" className="text-white hover:text-yellow-400 underline">Home</a>
<span className="text-white">
<svg className="w-3 h-3" fill="currentColor" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
</svg>
</span>
<a href="/about-us" className="text-white hover:text-yellow-400 underline">Health</a>
<span className="text-white">
<svg className="w-3 h-3" fill="currentColor" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
</svg>
</span>
<span className="text-white">Oncology</span>
</nav>
</div>
</div>
{/* Page Title */}
<div className="relative z-10 text-center -mt-2">
<h1 className="text-4xl md:text-4xl font-bold text-white mb-2">
Oncology
</h1>
<div className="w-16 h-1 bg-yellow-400 mx-auto"></div>
</div>
</section>
);
};
export default OncologyTitle;

View File

@ -0,0 +1,12 @@
export default function SampleRequirements({ title, items }) {
return (
<section className="p-8">
<h3 className="text-lg font-semibold mb-4">Sample Requirements {title}</h3>
<ul className="list-disc list-inside text-gray-700 space-y-2">
{items.map((item, idx) => (
<li key={idx}>{item}</li>
))}
</ul>
</section>
);
}

View File

@ -0,0 +1,27 @@
import OncologyTitle from './components/OncologyTitle';
import OncologyIntro from './components/OncologyIntro';
import HereditaryCancerPanel from './components/HereditaryCancerPanel';
import SampleRequirements from '../rare-disorders/components/SampleRequirements';
import PageLayout from '../../components/Layout/PageLayout';
export default function OncologyPage() {
return (
<PageLayout fixedHeader={true}>
{/* Page Title */}
<OncologyTitle />
{/* Intro */}
<OncologyIntro />
{/* Hereditary Cancer Panel */}
<HereditaryCancerPanel />
{/* Sample Requirements */}
<SampleRequirements/>
</PageLayout>
);
}

21
app/health/page.js Normal file
View File

@ -0,0 +1,21 @@
import HealthTitle from './components/HealthTitle';
import HealthIntro from './Components/HealthIntro';
import ClinicalAreas from './Components/ClinicalAreas';
import PageLayout from '../components/Layout/PageLayout';
export default function HealthPage() {
const breadcrumbs = [
{ label: 'Home', href: '/', current: false },
{ label: 'Health', href: '/health', current: false }
];
return (
<PageLayout fixedHeader={true}>
<HealthTitle/>
<HealthIntro />
<ClinicalAreas />
</PageLayout>
);
}

View File

@ -0,0 +1,40 @@
'use client'
import { useState } from "react";
export default function ClinicalAreasGrid() {
const areas = [
{ name: "Cardiovascular", icon: "/images/icons/cardio.png" },
{ name: "Dermatology", icon: "/images/icons/dermatology.png" },
{ name: "Dysmorphology", icon: "/images/icons/dysmorphology.png" },
{ name: "Ear, Nose, and Throat", icon: "/images/icons/ent.png" },
{ name: "Endocrinology", icon: "/images/icons/endocrinology.png" },
{ name: "Hematology", icon: "/images/icons/hematology.png" },
{ name: "Immunology", icon: "/images/icons/immunology.png" },
{ name: "Metabolic Disorders", icon: "/images/icons/metabolic.png" },
{ name: "Nephrology", icon: "/images/icons/nephrology.png" },
{ name: "Neurology", icon: "/images/icons/neurology.png" },
{ name: "Oncology", icon: "/images/icons/oncology.png" },
{ name: "Ophthalmology", icon: "/images/icons/ophthalmology.png" },
{ name: "Osteology", icon: "/images/icons/osteology.png" },
{ name: "Pneumology", icon: "/images/icons/pneumology.png" },
{ name: "Reproductive Health", icon: "/images/icons/reproductive.png" },
];
return (
<section className="mx-auto px-10 pt-12">
<h2 className="text-3xl font-bold text-gray-700 text-left pb-2 mb-4">Clinical Areas</h2>
<div className="grid sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">
{areas.map((area, idx) => (
<div
key={idx}
className="flex items-center gap-3 rounded-lg p-4 shadow-sm"
style={{ backgroundColor: '#f2fcfc' }}
>
<img src={area.icon} alt={area.name} className="w-6 h-6" />
<span className="text-gray-600 leading-relaxed text-base">{area.name}</span>
</div>
))}
</div>
</section>
);
}

View File

@ -0,0 +1,56 @@
export default function OperifyExome() {
const features = [
{ title: "Deep Coverage", desc: "≥100X average depth for high accuracy." },
{ title: "Superior Data Quality", desc: "≥90% bases with Q30 score." },
{ title: "Comprehensive Variant Detection", desc: "Identifies SNVs, Indels, and CNVs." },
{ title: "Uniparental Disomy Analysis", desc: "Detects UPD regions for imprinting disorders." },
{ title: "Coverage of Complex Genes", desc: "Includes SMN1, SMN2, and DMD." },
{ title: "Chromosomal Assessment", desc: "Detects aneuploidies and determines chromosomal sex." },
{ title: "Dynamic Reanalysis", desc: "Reanalysis as scientific knowledge evolves." }
];
return (
<section className="mx-auto px-10 pt-12">
<h2 className="text-3xl font-bold text-gray-700 text-left pb-2 mb-4">Operify Exome</h2>
<div className="mb-8">
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
Whole Exome Sequencing (WES) targets the protein-coding regions of the genome, where most
disease-causing mutations are found.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
With over 7,000 rare diseases identified80% of which have a genetic basisWES offers a
powerful approach to uncover their causes.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
Traditional diagnostic methods can be slow, costly, and inconclusive; WES streamlines the
process by delivering broad genetic insights in a single test.
</p>
<p className="text-gray-600 leading-relaxed text-base text-justify">
Operify Exome enhances WES by combining comprehensive coverage with advanced interpretation,
improving diagnostic yield and patient outcomes.
</p>
</div>
<h3 className="text-2xl font-semibold text-gray-700 mb-4">Key Features</h3>
<div className="overflow-x-auto">
<table className="w-full border-collapse border border-gray-300 rounded-lg">
<thead>
<tr className="bg-teal-50">
<th className="border border-gray-300 px-3 py-2 text-left font-semibold text-teal-700">Feature</th>
<th className="border border-gray-300 px-3 py-2 text-left font-semibold text-teal-700">Description</th>
</tr>
</thead>
<tbody>
{features.map((feature, idx) => (
<tr key={idx} className="hover:bg-teal-50">
<td className="border border-gray-300 px-6 py-3 text-gray-700 font-medium">{feature.title}</td>
<td className="border border-gray-300 px-6 py-3 text-gray-600">{feature.desc}</td>
</tr>
))}
</tbody>
</table>
</div>
</section>
);
}

View File

@ -0,0 +1,93 @@
export default function OperifyExomeMito() {
const features = [
{ title: "High Mean Target Depth", desc: "≥100X coverage for reliable detection." },
{ title: "High Base Quality", desc: "≥90% of bases with Q30 score." },
{ title: "Scope of Test", desc: "Covers SNVs/Indels, CNVs in nuclear and mitochondrial genome." },
{ title: "Uniparental Disomy", desc: "Detects regions important in rare recessive conditions." },
{ title: "Homologous Gene Analysis", desc: "Includes SMN1, SMN2, DMD." },
{ title: "Aneuploidy & Ploidy Estimation", desc: "Detects abnormal chromosome numbers and sex karyotype." },
{ title: "Reanalysis & Reclassification", desc: "Updates based on latest scientific knowledge." }
];
const genomeCoverage = [
{ genome: "Nuclear Genome", coverage: "Protein-coding regions of ~20000 genes" },
{ genome: "Mitochondrial genome", coverage: "37 genes" }
];
return (
<section className="mx-auto px-10 pt-12">
<h2 className="text-3xl font-bold text-gray-700 text-left pb-2 mb-4">Operify ExomeMito</h2>
<h3 className="text-xl font-semibold text-gray-700 mb-4">Boost diagnostic yield with Exome + Mito Sequencing</h3>
<div className="mb-8">
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
The Operify ExomeMito Panel offers a unified solution by integrating whole exome sequencing
with complete mitochondrial genome analysisaddressing both nuclear and mitochondrial causes
of disease.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
This combined approach is especially valuable in diagnosing complex, multisystemic, and rare
disorders, where variants may exist across both genomes.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
Mitochondrial disorders, though individually rare, are clinically significant, affecting
approximately 1 in 5,000 individuals and often missed in standard testing.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
Studies show that adding mitochondrial sequencing to exome testing increases diagnostic
yield by up to 20%, offering greater clarity and clinical confidence. <em>(PMID: 30369941)</em>
</p>
<p className="text-gray-600 leading-relaxed text-base text-justify">
While screening for rare genetic disorders, it's essential not to overlook the rarest among
them-mitochondrial disorders, which occur in approximately 1 in 5,000 individuals. Although
individually rare, their cumulative impact is significant in the context of rare disease
diagnostics. Multiple studies have demonstrated a substantial increase in diagnostic yieldup
to 20%when mitochondrial genome sequencing is performed alongside whole exome sequencing.
<em>Reference: PMID: 30369941</em>
</p>
</div>
<div className="mb-8">
<h3 className="text-2xl font-semibold text-gray-700 mb-4">Genome Coverage</h3>
<div className="overflow-x-auto">
<table className="w-full border-collapse border border-gray-300 rounded-lg">
<thead>
<tr className="bg-gray-50">
<th className="border border-gray-300 px-6 py-3 text-left text-gray-700 font-semibold">Genome</th>
<th className="border border-gray-300 px-6 py-3 text-left text-gray-700 font-semibold">Coverage</th>
</tr>
</thead>
<tbody>
{genomeCoverage.map((item, idx) => (
<tr key={idx} className="hover:bg-gray-50">
<td className="border border-gray-300 px-6 py-3 text-gray-700 font-medium">{item.genome}</td>
<td className="border border-gray-300 px-6 py-3 text-gray-600">{item.coverage}</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
<h3 className="text-2xl font-semibold text-gray-700 mb-4">Key Features</h3>
<div className="overflow-x-auto">
<table className="w-full border-collapse border border-gray-300 rounded-lg">
<thead>
<tr className="bg-gray-50">
<th className="border border-gray-300 px-6 py-3 text-left text-gray-700 font-semibold">Feature</th>
<th className="border border-gray-300 px-6 py-3 text-left text-gray-700 font-semibold">Description</th>
</tr>
</thead>
<tbody>
{features.map((feature, idx) => (
<tr key={idx} className="hover:bg-gray-50">
<td className="border border-gray-300 px-6 py-3 text-gray-700 font-medium">{feature.title}</td>
<td className="border border-gray-300 px-6 py-3 text-gray-600">{feature.desc}</td>
</tr>
))}
</tbody>
</table>
</div>
</section>
);
}

View File

@ -0,0 +1,18 @@
export default function RareIntro() {
return (
<section className="mx-auto px-10 pt-12">
<h1 className="text-4xl font-bold text-gray-700 text-left pb-2 mb-4">Rare Disorders</h1>
<h2 className="text-2xl font-semibold text-gray-700 mb-4">Transforming Delays into Diagnoses</h2>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
There are over 7,000 identified rare diseases, many of which begin in childhoodand
nearly 80% have a genetic cause. Yet, the average time to diagnose a rare disorder is
still 4.8 years, with some cases taking up to 20 years.
</p>
<p className="text-gray-600 leading-relaxed text-base text-justify">
At Operify Health, we leverage advanced Next Generation Sequencing (NGS) and proprietary
bioinformatics to deliver rapid, reliable insightshelping reduce the diagnostic journey
from years to days.
</p>
</section>
);
}

View File

@ -0,0 +1,41 @@
import React from 'react';
const RareTitle = () => {
return (
<section
className="relative bg-cover bg-center py-6 h-24"
style={{ backgroundImage: "url('/images/bredcrumb.jpg')" }}
>
{/* Breadcrumb */}
<div className="relative z-10 mb-1 -mt-3">
<div className="container mx-auto max-w-none px-4">
<nav className="flex items-center space-x-2 text-sm">
<a href="/" className="text-white hover:text-yellow-400 underline">Home</a>
<span className="text-white">
<svg className="w-3 h-3" fill="currentColor" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
</svg>
</span>
<a href="/about-us" className="text-white hover:text-yellow-400 underline">Health</a>
<span className="text-white">
<svg className="w-3 h-3" fill="currentColor" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clipRule="evenodd" />
</svg>
</span>
<span className="text-white">Rare Disorders</span>
</nav>
</div>
</div>
{/* Page Title */}
<div className="relative z-10 text-center -mt-2">
<h1 className="text-4xl md:text-4xl font-bold text-white mb-2">
Rare Disorders
</h1>
<div className="w-16 h-1 bg-yellow-400 mx-auto"></div>
</div>
</section>
);
};
export default RareTitle;

View File

@ -0,0 +1,37 @@
export default function SampleRequirements({ title, items }) {
return (
<section className="mx-auto px-10 pt-8 pb-12">
<div className="bg-gray-50 rounded-lg p-6">
<h3 className="text-2xl font-semibold text-gray-700 mb-6">{title} Sample Requirements</h3>
<div className="grid md:grid-cols-2 gap-6">
{/* Turnaround Time */}
<div className="flex items-start gap-4">
<div className="flex-shrink-0 w-10 h-10 bg-teal-100 rounded-full flex items-center justify-center">
<svg className="w-5 h-5 text-teal-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
</div>
<div>
<h4 className="text-lg font-semibold text-teal-600 mb-1">Turnaround Time</h4>
<p className="text-gray-600 leading-relaxed text-base">21 Days</p>
</div>
</div>
{/* Sample Requirement */}
<div className="flex items-start gap-4">
<div className="flex-shrink-0 w-10 h-10 bg-teal-100 rounded-full flex items-center justify-center">
<svg className="w-5 h-5 text-teal-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z" />
</svg>
</div>
<div>
<h4 className="text-lg font-semibold text-teal-600 mb-2">Sample Requirement</h4>
<p className="text-gray-600 leading-relaxed text-base">Blood/Saliva/Cheek Swab/Genomic DNA/Dry Blood Spot</p>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,29 @@
export default function SolutionsOffer() {
const solutions = [
{
name: "Exome",
desc: "Whole Exome Sequencing for uncovering the genetic basis of rare diseases."
},
{
name: "ExomeMito",
desc: "Exome + Mitochondrial Genome Sequencing for a higher diagnostic yield."
}
];
return (
<section className="mx-auto px-10 pt-12">
<h2 className="text-2xl font-semibold text-gray-700 text-left pb-2 mb-4">Our Rare Disease Solutions Offer</h2>
<div className="grid sm:grid-cols-2 gap-6">
{solutions.map((sol, idx) => (
<div
key={idx}
className="border rounded-lg p-6 hover:shadow-lg transition-shadow cursor-pointer"
>
<h3 className="text-xl font-semibold text-gray-700 mb-2">{sol.name}</h3>
<p className="text-gray-600 leading-relaxed text-base">{sol.desc}</p>
</div>
))}
</div>
</section>
);
}

View File

@ -0,0 +1,22 @@
export default function WESInfo() {
return (
<section className="mx-auto px-10 pt-12">
<h2 className="text-2xl font-semibold text-gray-700 text-left pb-2 mb-4">
Who Should Consider Whole Exome Sequencing (WES)?
</h2>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
Whole Exome Sequencing (WES) is recommended for individuals with unexplained genetic
disorders, complex or atypical clinical presentations, or when prior genetic tests
have been inconclusive.
</p>
<p className="text-gray-600 leading-relaxed text-base mb-4 text-justify">
It is especially valuable in diagnosing rare inherited diseases, uncovering the cause
of developmental delays, intellectual disabilities, or early-onset neurological
conditions, and providing insights for personalized treatment planning.
</p>
<p className="text-gray-600 leading-relaxed text-base text-justify">
WES can help identify genetic causes in a wide range of rare disorders.
</p>
</section>
);
}

View File

@ -0,0 +1,52 @@
import RareTitle from './components/RareTitle';
import RareIntro from './components/RareIntro';
import ClinicalAreasGrid from './components/ClinicalAreasGrid';
import SolutionsOffer from './components/SolutionsOffer';
import WESInfo from './components/WESInfo';
import OperifyExome from './components/OperifyExome';
import OperifyExomeMito from './components/OperifyExomeMito';
import SampleRequirements from './components/SampleRequirements';
import PageLayout from '../../components/Layout/PageLayout';
export default function RareDisorderPage() {
return (
<PageLayout fixedHeader={true}>
{/* Page Title */}
<RareTitle />
{/* Intro Paragraph */}
<RareIntro />
{/* Solutions Offered */}
<SolutionsOffer />
{/* WES Info */}
<WESInfo />
{/* Clinical Areas Grid */}
<ClinicalAreasGrid />
{/* Operify Exome */}
<OperifyExome />
<SampleRequirements
title="Operify Exome"
items={[
"2-5 mL peripheral blood in EDTA tube",
"High-quality extracted DNA (minimum 2 µg)",
"Fresh or frozen tissue for certain cases"
]}
/>
{/* Operify ExomeMito */}
<OperifyExomeMito />
<SampleRequirements
title="Operify ExomeMito"
items={[
"2-5 mL peripheral blood in EDTA tube",
"High-quality extracted DNA (minimum 2 µg)",
"Fresh or frozen tissue for certain cases"
]}
/>
</PageLayout>
);
}

View File

@ -1,7 +1,7 @@
import TitleBar from '../../components/shared/TitleBar';
import PageLayout from '../../components/Layout/PageLayout'
import CircularIntroduction from './components/CircularIntroduction';
// import CircularRNAPipeline from './components/CircularRNAPipeline';
import CircularRNAPipeline from './components/CircularRNAPipeline';
import CircularAdvantages from './components/CircularAdvantages';
import CircularApplications from './components/CircularApplications';
import CircularSpecifications from './components/CircularSpecifications';
@ -21,7 +21,7 @@ export default function CircularRNASequencingPage() {
/>
<CircularIntroduction />
<CircularAdvantages />
{/* <CircularRNAPipeline/> */}
<CircularRNAPipeline/>
<CircularApplications />
<CircularSpecifications />
</PageLayout>

View File

@ -1,98 +1,49 @@
import React from 'react';
import { ArrowDown, ArrowRight, ArrowUp } from 'lucide-react';
const MRNAPipeline = ({
title = "Bioinformatics Pipeline",
leftSteps = [
"Raw Sequencing Data (fastq files)",
"Quality Control and Preprocessing of Data",
"High Quality Sequencing Data (fastq file)",
"Alignment to Reference Genome",
"Transcript Assembly"
],
rightSteps = [
"Downstream Analysis",
"Differential Expression Profiling",
"Annotation",
"Transcript Expression Profiling",
"Transcript Assembly Validation"
],
svgContent = null, // Pass your SVG content here as JSX
svgUrl = "/images/flowchart/mrna.svg",
backgroundColor = "bg-gray-50",
cardColor = "bg-gray-300",
textColor = "text-teal-600",
arrowColor = "text-gray-600",
textColor = "text-gray-700",
className = "",
cardClassName = "",
titleClassName = ""
titleClassName = "",
svgClassName = "",
containerClassName = ""
}) => {
// Combine steps for mobile layout
const mobileSteps = [...leftSteps, ...rightSteps.slice().reverse()];
return (
<section className={`py-6 sm:py-8 lg:py-12 ${backgroundColor} ${className}`}>
<div className="container mx-auto max-w-none px-3 sm:px-4 lg:px-6">
<h2 className={`text-gray-700 text-left pb-4 sm:pb-6 text-xl sm:text-2xl lg:text-3xl font-normal ${titleClassName}`}>
<div className={`container mx-auto max-w-none px-3 sm:px-4 lg:px-6 ${containerClassName}`}>
<h2 className={`${textColor} text-left pb-4 sm:pb-6 text-xl sm:text-2xl lg:text-3xl font-normal ${titleClassName}`}>
{title}
</h2>
{/* Pipeline Flowchart */}
{/* SVG Flowchart Container */}
<div className="bg-white rounded-xl shadow-lg p-4 sm:p-6 lg:p-8">
<div className="flex justify-center">
<div className="w-full max-w-5xl">
<div className="relative">
{/* Mobile Layout - Single Column */}
<div className="block sm:hidden">
<div className="flex flex-col items-center space-y-3">
{mobileSteps.map((step, index) => (
<React.Fragment key={index}>
<div className={`${cardColor} rounded-lg p-3 w-full text-center border ${cardClassName}`}>
<h3 className={`text-xs font-medium ${textColor}`}>{step}</h3>
</div>
{index < mobileSteps.length - 1 && (
<ArrowDown className={`w-5 h-5 ${arrowColor}`} />
)}
</React.Fragment>
))}
</div>
</div>
{/* Desktop Layout - Two Columns */}
<div className="hidden sm:block">
<div className="grid grid-cols-2 gap-4 sm:gap-6 lg:gap-8">
{/* Left Column */}
<div className="flex flex-col items-center space-y-3">
{leftSteps.map((step, index) => (
<React.Fragment key={index}>
<div className={`${cardColor} rounded-lg p-4 w-full text-center border ${cardClassName}`} style={{maxWidth: '19rem'}}>
<h3 className={`text-sm font-medium ${textColor}`}>{step}</h3>
</div>
{index < leftSteps.length - 1 && (
<ArrowDown className={`w-6 h-6 ${arrowColor}`} />
)}
</React.Fragment>
))}
</div>
{/* Right Column */}
<div className="flex flex-col items-center space-y-3">
{rightSteps.map((step, index) => (
<React.Fragment key={index}>
<div className={`${cardColor} rounded-lg p-4 w-full text-center border ${cardClassName}`} style={{maxWidth: '19rem'}}>
<h3 className={`text-sm font-medium ${textColor}`}>{step}</h3>
</div>
{index < rightSteps.length - 1 && (
<ArrowUp className={`w-6 h-6 ${arrowColor}`} />
)}
</React.Fragment>
))}
<div className="w-full max-w-6xl">
{/* SVG Container with responsive sizing */}
<div className={`w-full ${svgClassName}`}>
{svgUrl ? (
// If SVG URL/path is provided
<img
src={svgUrl}
alt="Flowchart diagram"
className="w-full h-auto object-contain"
/>
) : svgContent ? (
// If SVG content is provided as JSX
<div className="w-full">
<div className="w-full">
{svgContent}
</div>
</div>
{/* Horizontal Arrow from Transcript Assembly to Transcript Assembly Validation */}
<div className="absolute bottom-4 left-1/2 transform -translate-x-1/2 flex items-center justify-center">
<ArrowRight className={`w-8 h-8 ${arrowColor}`} />
) : (
// Fallback message
<div className="flex items-center justify-center h-40 text-gray-500">
<p>Please provide SVG content or URL</p>
</div>
</div>
)}
</div>
</div>
</div>

View File

@ -1,98 +1,49 @@
import React from 'react';
import { ArrowDown, ArrowRight, ArrowUp } from 'lucide-react';
const SingleCellPipeline = ({
title = "Bioinformatics Pipeline",
leftSteps = [
"Raw Sequencing Data (fastq files)",
"Quality Control and Preprocessing of Data",
"High Quality Sequencing Data (fastq file)",
"Alignment to Reference Genome",
"Transcript and Gene Expression Profiling"
],
rightSteps = [
"Downstream Advanced Analysis",
"GO/KEGG Enrichment",
"Differential Expression Profiling",
"Cell Clustering Cell definition (SingleR)",
"Cell filter and Data Normalisation"
],
svgContent = null, // Pass your SVG content here as JSX
svgUrl = "/images/flowchart/singlecellrna.svg",
backgroundColor = "bg-gray-50",
cardColor = "bg-gray-300",
textColor = "text-teal-600",
arrowColor = "text-gray-600",
textColor = "text-gray-700",
className = "",
cardClassName = "",
titleClassName = ""
titleClassName = "",
svgClassName = "",
containerClassName = ""
}) => {
// Combine steps for mobile layout
const mobileSteps = [...leftSteps, ...rightSteps.slice().reverse()];
return (
<section className={`py-6 sm:py-8 lg:py-12 ${backgroundColor} ${className}`}>
<div className="container mx-auto max-w-none px-3 sm:px-4 lg:px-6">
<h2 className={`text-gray-700 text-left pb-4 sm:pb-6 text-xl sm:text-2xl lg:text-3xl font-normal ${titleClassName}`}>
<div className={`container mx-auto max-w-none px-3 sm:px-4 lg:px-6 ${containerClassName}`}>
<h2 className={`${textColor} text-left pb-4 sm:pb-6 text-xl sm:text-2xl lg:text-3xl font-normal ${titleClassName}`}>
{title}
</h2>
{/* Pipeline Flowchart */}
{/* SVG Flowchart Container */}
<div className="bg-white rounded-xl shadow-lg p-4 sm:p-6 lg:p-8">
<div className="flex justify-center">
<div className="w-full max-w-5xl">
<div className="relative">
{/* Mobile Layout - Single Column */}
<div className="block sm:hidden">
<div className="flex flex-col items-center space-y-3">
{mobileSteps.map((step, index) => (
<React.Fragment key={index}>
<div className={`${cardColor} rounded-lg p-3 w-full text-center border ${cardClassName}`}>
<h3 className={`text-xs font-medium ${textColor}`}>{step}</h3>
</div>
{index < mobileSteps.length - 1 && (
<ArrowDown className={`w-5 h-5 ${arrowColor}`} />
)}
</React.Fragment>
))}
</div>
</div>
{/* Desktop Layout - Two Columns */}
<div className="hidden sm:block">
<div className="grid grid-cols-2 gap-4 sm:gap-6 lg:gap-8">
{/* Left Column */}
<div className="flex flex-col items-center space-y-3">
{leftSteps.map((step, index) => (
<React.Fragment key={index}>
<div className={`${cardColor} rounded-lg p-4 w-full text-center border ${cardClassName}`} style={{maxWidth: '19rem'}}>
<h3 className={`text-sm font-medium ${textColor}`}>{step}</h3>
</div>
{index < leftSteps.length - 1 && (
<ArrowDown className={`w-6 h-6 ${arrowColor}`} />
)}
</React.Fragment>
))}
</div>
{/* Right Column */}
<div className="flex flex-col items-center space-y-3">
{rightSteps.map((step, index) => (
<React.Fragment key={index}>
<div className={`${cardColor} rounded-lg p-4 w-full text-center border ${cardClassName}`} style={{maxWidth: '19rem'}}>
<h3 className={`text-sm font-medium ${textColor}`}>{step}</h3>
</div>
{index < rightSteps.length - 1 && (
<ArrowUp className={`w-6 h-6 ${arrowColor}`} />
)}
</React.Fragment>
))}
<div className="w-full max-w-6xl">
{/* SVG Container with responsive sizing */}
<div className={`w-full ${svgClassName}`}>
{svgUrl ? (
// If SVG URL/path is provided
<img
src={svgUrl}
alt="Flowchart diagram"
className="w-full h-auto object-contain"
/>
) : svgContent ? (
// If SVG content is provided as JSX
<div className="w-full">
<div className="w-full">
{svgContent}
</div>
</div>
{/* Horizontal Arrow from Transcript Assembly to Transcript Assembly Validation */}
<div className="absolute bottom-28 left-1/2 transform -translate-x-1/2 flex items-center justify-center">
<ArrowRight className={`w-8 h-8 ${arrowColor}`} />
) : (
// Fallback message
<div className="flex items-center justify-center h-40 text-gray-500">
<p>Please provide SVG content or URL</p>
</div>
</div>
)}
</div>
</div>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
public/images/icons/ent.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB