diff --git a/package-lock.json b/package-lock.json
index 7914953..acff8f8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,6 +15,7 @@
"@payloadcms/richtext-lexical": "^3.20.0",
"@payloadcms/storage-s3": "^3.20.0",
"@popperjs/core": "2.11.8",
+ "animejs": "^3.2.2",
"bootstrap": "^5.1.3",
"dayjs": "^1.11.13",
"graphql": "^16.10.0",
@@ -40,6 +41,7 @@
},
"devDependencies": {
"@eslint/eslintrc": "^3",
+ "@types/animejs": "^3.1.13",
"@types/bootstrap": "^5.2.10",
"@types/imagesloaded": "^4.1.6",
"@types/isotope-layout": "^3.0.14",
@@ -4279,6 +4281,13 @@
"@types/estree": "*"
}
},
+ "node_modules/@types/animejs": {
+ "version": "3.1.13",
+ "resolved": "https://registry.npmjs.org/@types/animejs/-/animejs-3.1.13.tgz",
+ "integrity": "sha512-yWg9l1z7CAv/TKpty4/vupEh24jDGUZXv4r26StRkpUPQm04ztJaftgpto8vwdFs8SiTq6XfaPKCSI+wjzNMvQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/bootstrap": {
"version": "5.2.10",
"resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.2.10.tgz",
@@ -5069,6 +5078,12 @@
"integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==",
"license": "MIT"
},
+ "node_modules/animejs": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/animejs/-/animejs-3.2.2.tgz",
+ "integrity": "sha512-Ao95qWLpDPXXM+WrmwcKbl6uNlC5tjnowlaRYtuVDHHoygjtIPfDUoK9NthrlZsQSKjZXlmji2TrBUAVbiH0LQ==",
+ "license": "MIT"
+ },
"node_modules/ansi-regex": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
diff --git a/package.json b/package.json
index f103f18..a0a9d4f 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"private": true,
"type": "module",
"scripts": {
- "dev": "NEXT_DEBUG_TURBOPACK=1 next dev --turbopack",
+ "dev": "next dev --turbopack",
"dev-old": "next dev",
"build": "next build",
"start": "next start",
@@ -20,6 +20,7 @@
"@payloadcms/richtext-lexical": "^3.20.0",
"@payloadcms/storage-s3": "^3.20.0",
"@popperjs/core": "2.11.8",
+ "animejs": "^3.2.2",
"bootstrap": "^5.1.3",
"dayjs": "^1.11.13",
"graphql": "^16.10.0",
@@ -45,6 +46,7 @@
},
"devDependencies": {
"@eslint/eslintrc": "^3",
+ "@types/animejs": "^3.1.13",
"@types/bootstrap": "^5.2.10",
"@types/imagesloaded": "^4.1.6",
"@types/isotope-layout": "^3.0.14",
diff --git a/public/assets/css/custom.css b/public/assets/css/custom.css
index 5582ce6..9511a6e 100644
--- a/public/assets/css/custom.css
+++ b/public/assets/css/custom.css
@@ -91,8 +91,7 @@ a {
}
.mn-sub.open {
- max-height: 200px;
- overflow: auto !important;
+ max-height: 1000px;
opacity: 1 !important;
}
html {
diff --git a/public/assets/images/demo-modern/section-bg-3.jpeg b/public/assets/images/demo-modern/section-bg-3.jpeg
new file mode 100644
index 0000000..596c142
Binary files /dev/null and b/public/assets/images/demo-modern/section-bg-3.jpeg differ
diff --git a/public/assets/images/demo-modern/section-bg-3.jpg b/public/assets/images/demo-modern/section-bg-3.jpg
deleted file mode 100644
index 260c70a..0000000
Binary files a/public/assets/images/demo-modern/section-bg-3.jpg and /dev/null differ
diff --git a/src/app/(main)/[pageslug]/page.tsx b/src/app/(main)/[pageslug]/page.tsx
index 86bcf48..59623a0 100644
--- a/src/app/(main)/[pageslug]/page.tsx
+++ b/src/app/(main)/[pageslug]/page.tsx
@@ -24,16 +24,12 @@ function Loading() {
return (
<>
- {/* Section */}
- {/* End Section */}
>
);
}
diff --git a/src/app/(main)/home-bg-video/page.tsx b/src/app/(main)/home-bg-video/page.tsx
index 5bffa45..8ac4840 100644
--- a/src/app/(main)/home-bg-video/page.tsx
+++ b/src/app/(main)/home-bg-video/page.tsx
@@ -4,7 +4,7 @@ import Homepage from "@/components/Homepage";
import dynamic from "next/dynamic";
const ParallaxContainer = dynamic(() => import("@/components/ParallaxContainer"), {
- ssr: false, // Disable server-side rendering
+ ssr: true,
});
export default function Home1BGVideoMultiPage() {
diff --git a/src/app/(main)/page.tsx b/src/app/(main)/page.tsx
index cc47c27..78e456b 100644
--- a/src/app/(main)/page.tsx
+++ b/src/app/(main)/page.tsx
@@ -2,6 +2,24 @@ import Homepage from "./home-bg-video/page";
export const metadata = {
title: "HomePage - Cochise Oncology",
description: "Resonance — One & Multi Page React Nextjs Creative Template",
+ keywords: "Cochise Oncology, Oncology, Healthcare, Medical Services, Cancer Treatment",
+ author: "Cochise Oncology",
+ viewport: "width=device-width, initial-scale=1.0",
+ robots: "index, follow",
+ og: {
+ title: "HomePage - Cochise Oncology",
+ description: "Resonance — One & Multi Page React Nextjs Creative Template",
+ type: "website",
+ url: "https://www.cochiseoncology.com",
+ image: "https://www.cochiseoncology.com/og-image.jpg",
+ },
+ twitter: {
+ card: "summary_large_image",
+ site: "@CochiseOncology",
+ title: "HomePage - Cochise Oncology",
+ description: "Resonance — One & Multi Page React Nextjs Creative Template",
+ image: "https://www.cochiseoncology.com/twitter-image.jpg",
+ },
};
export default function Home() {
diff --git a/src/collections/Pages.ts b/src/collections/Pages.ts
index 766bf8b..533af53 100644
--- a/src/collections/Pages.ts
+++ b/src/collections/Pages.ts
@@ -1,7 +1,6 @@
import { BeforeFooterBlock } from "@/blocks/BeforeFooter";
import { ContentBlock } from "@/blocks/Content";
import { HorizontalImageContentBlock } from "@/blocks/HorizontalImageContent";
-import { ImageSliderBlock } from "@/blocks/ImageSlider";
import { OurTeamBlock } from "@/blocks/OurTeam";
import formatSlug from "@/utils/formatSlug";
import { CollectionConfig } from "payload";
@@ -37,7 +36,7 @@ export const Pages: CollectionConfig = {
label: "Page Layout",
type: "blocks",
minRows: 1,
- blocks: [ContentBlock, BeforeFooterBlock, OurTeamBlock, HorizontalImageContentBlock, ImageSliderBlock],
+ blocks: [ContentBlock, BeforeFooterBlock, OurTeamBlock, HorizontalImageContentBlock],
},
{
name: "meta",
diff --git a/src/components/Blocks/RenderBlocks.tsx b/src/components/Blocks/RenderBlocks.tsx
index 646d7d1..37a92e3 100644
--- a/src/components/Blocks/RenderBlocks.tsx
+++ b/src/components/Blocks/RenderBlocks.tsx
@@ -5,14 +5,12 @@ import { ContentBlock } from "./Content";
import { BeforeFooterBlock } from "./BeforeFooter";
import { OurTeamBlock } from "./OurTeam";
import { HorizontalImageContentBlock } from "./HorizontalImageContent";
-import { ImageSliderBlock } from "./ImageSlider";
const blockComponents = {
contentBlock: ContentBlock,
beforeFooterBlock: BeforeFooterBlock,
ourTeamBlock: OurTeamBlock,
horizontalImageContentBlock: HorizontalImageContentBlock,
- imageSliderBlock: ImageSliderBlock,
};
export const RenderBlocks: React.FC<{
diff --git a/src/components/Facts.tsx b/src/components/Facts.tsx
index 622d088..7f4f920 100644
--- a/src/components/Facts.tsx
+++ b/src/components/Facts.tsx
@@ -1,4 +1,6 @@
import { numbers } from "@/data/facts";
+import { features5 } from "@/data/features";
+import { services5 } from "@/data/services";
import React from "react";
export default function Facts() {
@@ -7,14 +9,26 @@ export default function Facts() {
{/* Numbers Grid */}
{/* Numbers Item */}
- {numbers.map((number, index) => (
-
-
-
{number.title}
-
{number.descr}
+ {features5.map((elm: any, i: number) => (
+
+
+
+
{elm.title}
+
{elm.description}
))}
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx
index f7616f5..4e46184 100644
--- a/src/components/Footer.tsx
+++ b/src/components/Footer.tsx
@@ -2,8 +2,6 @@
import React from "react";
import Image from "next/image";
import { FaPhone, FaFax, FaFacebook, FaMapMarkerAlt, FaClock } from "react-icons/fa";
-import FooterSocials from "./FooterSocial";
-import { footerLinks } from "@/data/footer";
export default function Footer() {
const scrollToTop = (event: React.MouseEvent
) => {
@@ -23,10 +21,10 @@ export default function Footer() {
-
+
Contact Us
-
-
+
+
-
+
(520) 803-6644
-
+
Fax: (520) 459-3193
-
+
*/}
{/* End Languages */}
-
-
-
- Request Consultation
-
- Request Consultation
-
-
-
-
+
{/* End Main Menu */}
diff --git a/src/components/HeaderNav.tsx b/src/components/HeaderNav.tsx
index 5f138c0..d19931f 100644
--- a/src/components/HeaderNav.tsx
+++ b/src/components/HeaderNav.tsx
@@ -3,12 +3,22 @@
import addScrollspy from "@/utils/addScroll";
import { init_classic_menu_resize } from "@/utils/menuToggle";
import { scrollToElement } from "@/utils/scrollToElement";
-import { closeMobileMenu } from "@/utils/toggleMobileMenu";
+import { closeMobileMenu, toggleMobileMenu } from "@/utils/toggleMobileMenu";
import { usePathname } from "next/navigation";
-import { useEffect } from "react";
+import { useEffect, useRef, useState } from "react";
import Link from "next/link";
export default function HeaderNav({ links, animateY = false }: any) {
+ const [isDropdownOpen, setIsDropdownOpen] = useState([""]);
+ const dropdownRef = useRef(null);
+
+ const toggleDropdown = (section: string[]) => {
+ if (section == isDropdownOpen) {
+ setIsDropdownOpen([""]);
+ }
+ setIsDropdownOpen(section);
+ };
+
useEffect(() => {
setTimeout(() => {
scrollToElement();
@@ -52,17 +62,20 @@ export default function HeaderNav({ links, animateY = false }: any) {
className="mn-has-sub"
onClick={(e) => {
e.preventDefault();
- // toggleDropdown();
+ toggleDropdown([link.text]);
}}
>
{link.text}
-
+
{link.child.map((subLink: any, subLinkIdx: number) => (
- {!Array.isArray(subLink?.child) && {subLink?.text}}
-
+ {!Array.isArray(subLink?.child) && (
+ toggleMobileMenu()}>
+ {subLink?.text}
+
+ )}
{Array.isArray(subLink?.child) && (
<>
{
e.preventDefault();
- // toggleDropdown();
+ toggleDropdown([link.text, subLink.text]);
}}
>
{subLink.text}
-
+
{subLink.child.map((subLink2: any, subLinkIdx2: number) => (
- {subLink2?.text}
+ toggleMobileMenu()}>
+ {subLink2?.text}
+
))}
diff --git a/src/components/Hero.tsx b/src/components/Hero.tsx
index cb55330..6b6adbd 100644
--- a/src/components/Hero.tsx
+++ b/src/components/Hero.tsx
@@ -1,6 +1,7 @@
"use client";
import { useRef, useState } from "react";
+import Link from "next/link";
export default function Hero6() {
const videoRef = useRef(null);
@@ -37,15 +38,6 @@ export default function Hero6() {
- {/*
-
- Volume On
-
-
-
- Pause
- */}
- {/* End Background Video */}
{/* Home Section Content */}
@@ -63,18 +55,16 @@ export default function Hero6() {
{/* End Home Section Text */}
diff --git a/src/components/Homepage.tsx b/src/components/Homepage.tsx
index 1ec9a80..cffbf6e 100644
--- a/src/components/Homepage.tsx
+++ b/src/components/Homepage.tsx
@@ -11,8 +11,7 @@ import Link from "next/link";
import TestimonialsDark from "./TestimonialsDark";
import ContactDark from "./ContactDark";
import { features4 } from "@/data/features";
-import Features from "./Features";
-import Team from "./Team";
+import Cta3 from "./cta3";
export default function homepage({ onePage = false, dark = false }) {
return (
@@ -66,31 +65,15 @@ export default function homepage({ onePage = false, dark = false }) {
>
)}
{onePage ? (
- <>
- {" "}
-
-
- Learn more
-
-
- Learn more
-
-
- >
+ <>>
) : (
<>
{" "}
-
-
- Learn more
-
-
- Learn more
-
+
+
+ Find more about Radixact
+
+
>
)}
@@ -120,12 +103,16 @@ export default function homepage({ onePage = false, dark = false }) {
-
+
+
+
+
+
Why choose Cochise Oncology?
+
+ Here at Cochise Oncology we offer the most up-to-date technology in cancer treatment that rivals the largest
+ and most prestigious centers in the country.
+
+
@@ -164,91 +151,45 @@ export default function homepage({ onePage = false, dark = false }) {
{/* End Right Column */}
-
-
-
-
-
-
Why choose Cochise Oncology?
-
- Here at Cochise Oncology we offer the most up-to-date technology in cancer treatment that rivals the
- largest and most prestigious centers in the country.
-
-
-
- {/* Features Grid */}
-
- {/* End Features Grid */}
+
-
-
-
- {/* Decoration Circles */}
-
-
- {/* End Decoration Circles */}
-
-
-
-
-
Like our creative works?
-
- Quisque posuere mollis ullamcorper. Ut eget metus lorem ipsum posuere eget at ex. Aenean consequat
- vitae lorem in vehicula.
-
-
-
-
-
+
+ {/* End Desktop Overlay */}
+ {/* Mobile Overlay */}
+
+ {/* End Mobile Overlay */}
+
+
+
+
A Cancer Treatment Center of Excellence
+
+ We believe our patients deserve and demand the very best in timely treatments, personalized care,
+ professional competence, and advanced technology. We will achieve this vision by employing caring and
+ competent staff with excellent training, developing multidisciplinary collaborations, and using the
+ latest technology available in the most comfortable environment.
+
+
+ {/* Features List */}
+
+ {/* End Features List */}
-
-
-
-
>
);
}
diff --git a/src/components/Pages/Page.tsx b/src/components/Pages/Page.tsx
index 60012c3..f908cdd 100644
--- a/src/components/Pages/Page.tsx
+++ b/src/components/Pages/Page.tsx
@@ -9,6 +9,7 @@ export interface PageProps {
export default async function Page({ slug }: PageProps) {
const page = await fetchPageBySlug({ slug });
+
if (!page) {
return notFound();
}
diff --git a/src/components/SplashScreen.tsx b/src/components/SplashScreen.tsx
new file mode 100644
index 0000000..53be7ce
--- /dev/null
+++ b/src/components/SplashScreen.tsx
@@ -0,0 +1,52 @@
+import React, { useEffect, useState } from "react";
+import Image from "next/image";
+import anime from "animejs";
+
+interface SplashScreenProps {
+ finishLoading: () => void;
+}
+
+const SplashScreen: React.FC
= ({ finishLoading }) => {
+ const [isMounted, setIsMounted] = useState(false);
+
+ const animate = () => {
+ const loader = anime.timeline({
+ complete: () => finishLoading(),
+ });
+
+ loader
+ .add({
+ targets: "#logo",
+ delay: 0,
+ scale: 1,
+ duration: 500,
+ easing: "easeInOutExpo",
+ })
+ .add({
+ targets: "#logo",
+ delay: 0,
+ scale: 1.25,
+ duration: 500,
+ easing: "easeInOutExpo",
+ });
+ };
+
+ useEffect(() => {
+ const timeout = setTimeout(() => {
+ setIsMounted(true);
+ }, 10);
+
+ animate();
+ return () => clearTimeout(timeout);
+ }, []);
+
+ return isMounted ? (
+
+
+
+ ) : (
+ <>>
+ );
+};
+
+export default SplashScreen;
diff --git a/src/components/cta3.tsx b/src/components/cta3.tsx
new file mode 100644
index 0000000..c36d7ea
--- /dev/null
+++ b/src/components/cta3.tsx
@@ -0,0 +1,26 @@
+import { features2 } from "@/data/features";
+import React from "react";
+
+export default function Cta3() {
+ return (
+ <>
+
+ {/* Features List Item */}
+ {features2.map((elm, i) => (
+ <>
+
+
+
+
+
+
{elm.text}
+
{elm.desc}
+
+
+ >
+ ))}
+ {/* End Features List Item */}
+
+ >
+ );
+}
diff --git a/src/data/features.ts b/src/data/features.ts
index d319279..c6f4b50 100644
--- a/src/data/features.ts
+++ b/src/data/features.ts
@@ -73,19 +73,23 @@ export const features = [
export const features2 = [
{
id: 1,
- text: "Business to business",
+ text: "Hope",
+ desc: "Founded in 2006, COCHISE ONCOLOGY became a leader in cancer treatment. Hope lives here, guiding patients through tough times.",
},
{
id: 2,
- text: "Non-profit business",
+ text: "Strength",
+ desc: "We’ve greatly impacted Southern Arizona. Our facility is recognized for innovative and high-tech treatments.",
},
{
id: 3,
- text: "Business to customer",
+ text: "Courage",
+ desc: "Fighting cancer requires immense courage. We believe no one should face this alone, so we provide whole patient care.",
},
{
id: 4,
- text: "Ecommerce",
+ text: "Resilience",
+ desc: "adapt, recover, and grow stronger in the face of challenges and adversity",
},
];
diff --git a/src/payload-types.ts b/src/payload-types.ts
index 56dede4..80374ba 100644
--- a/src/payload-types.ts
+++ b/src/payload-types.ts
@@ -197,17 +197,6 @@ export interface Page {
blockName?: string | null;
blockType: 'horizontalImageContentBlock';
}
- | {
- images?:
- | {
- image?: (number | null) | Media;
- id?: string | null;
- }[]
- | null;
- id?: string | null;
- blockName?: string | null;
- blockType: 'imageSliderBlock';
- }
)[]
| null;
meta?: {
@@ -580,18 +569,6 @@ export interface PagesSelect {
id?: T;
blockName?: T;
};
- imageSliderBlock?:
- | T
- | {
- images?:
- | T
- | {
- image?: T;
- id?: T;
- };
- id?: T;
- blockName?: T;
- };
};
meta?:
| T