diff --git a/public/assets/css/demo-slick/demo-slick.css b/public/assets/css/demo-slick/demo-slick.css index 42c796e..4341d6a 100644 --- a/public/assets/css/demo-slick/demo-slick.css +++ b/public/assets/css/demo-slick/demo-slick.css @@ -64,11 +64,9 @@ --gradient-gray-light-1: linear-gradient(0deg, #f7f9fc 0%, #fff 100%); --gradient-gray-light-2: linear-gradient(0deg, #fff 0%, #f7f9fc 100%); --border-radius-default: 10px; - --box-shadow: - 0px 5px 10px 0px rgba(30, 36, 50, 0.05), 0px 1px 1px 0px rgba(30, 36, 50, 0.03), + --box-shadow: 0px 5px 10px 0px rgba(30, 36, 50, 0.05), 0px 1px 1px 0px rgba(30, 36, 50, 0.03), 0px 3px 5px 0px rgba(30, 36, 50, 0.03); - --box-shadow-strong: - 0px 5px 10px 0px rgba(30, 36, 50, 0.08), 0px 1px 1px 0px rgba(30, 36, 50, 0.06), + --box-shadow-strong: 0px 5px 10px 0px rgba(30, 36, 50, 0.08), 0px 1px 1px 0px rgba(30, 36, 50, 0.06), 0px 3px 5px 0px rgba(30, 36, 50, 0.06); --box-shadow-block: 0px 10px 30px 0px rgba(30, 36, 50, 0.07), 0px 0px 1px 0px rgba(30, 36, 50, 0.1); --box-shadow-block-strong: 0px 15px 50px 0px rgba(30, 36, 50, 0.14), 0px 0px 1px 0px rgba(30, 36, 50, 0.15); diff --git a/public/assets/css/style.css b/public/assets/css/style.css index 0d49a7e..360b416 100644 --- a/public/assets/css/style.css +++ b/public/assets/css/style.css @@ -4146,7 +4146,6 @@ a.logo:hover { } /* Mobile nav menu sub */ - .mobile-on .mn-has-sub > .mi-chevron-down { display: block; width: 24px; @@ -4321,6 +4320,7 @@ a.logo:hover { backdrop-filter: blur(10px); } .main-nav.dark .inner-nav ul > li > a { + font-size: 16px; color: #fff; opacity: 0.78; } @@ -4373,8 +4373,8 @@ a.logo:hover { */ .main-nav.transparent { - /* background: transparent !important; */ - background: linear-gradient(to right, #64b3b4, #a8dcca) !important; + background: transparent !important; + /* background: linear-gradient(to right, #64b3b4, #a8dcca) !important; */ box-shadow: none; } .main-nav.js-transparent { @@ -6461,8 +6461,7 @@ img.services-image { overflow: hidden; } .team-item-image img { - width: 300px; - height: 400px; + height: 380px; transition: all 0.4s ease; object-fit: cover; } diff --git a/src/app/(main)/biography/[slug]/page.tsx b/src/app/(main)/biography/[slug]/page.tsx index 5ba0222..976d9ae 100644 --- a/src/app/(main)/biography/[slug]/page.tsx +++ b/src/app/(main)/biography/[slug]/page.tsx @@ -2,23 +2,63 @@ import { BeforeFooterBlock } from "@/components/Blocks/BeforeFooter"; import { fetchTeamDetail } from "@/services/payload/team"; import { RichText } from "@payloadcms/richtext-lexical/react"; import Image from "next/image"; +import { Metadata } from "next/types"; import { Suspense } from "react"; +export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }): Promise { + const name = "Cochise Oncology"; + let title = "Page"; + let description = "Page"; + let imgUrl = ""; + + const slug = (await params).slug; + const blog = await fetchTeamDetail(decodeURIComponent(slug)); + + // check for blog data + if (!!blog) { + title = `${name} Staff - ${blog.data.name}`; + description = `${name} Staff - ${blog.data.name}`; + imgUrl = blog.imgUrl; + } + + return { + title: title, + description: description, + openGraph: { + title: title, + description: description, + images: !!imgUrl ? { url: imgUrl } : undefined, + }, + }; +} + export default async function BiographySinglePage({ params }: { params: Promise<{ slug: string }> }) { const slug = (await params).slug; - const data = await fetchTeamDetail(slug); - if (!data?.data) return <>; + const data = await fetchTeamDetail(decodeURIComponent(slug)); + if (!data?.data) + return ( + <> + + + ); + return ( <> }> <>
{/* */} -
- +
+ {"section-bg-13"}
{/* */} -
@@ -45,8 +85,8 @@ export default async function BiographySinglePage({ params }: { params: Promise< {/* Post */}
-
- {data.data.name} +
+ {data.data.name}
diff --git a/src/app/(main)/coba/page.tsx b/src/app/(main)/coba/page.tsx deleted file mode 100644 index bd501c7..0000000 --- a/src/app/(main)/coba/page.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function CobaPage() { - return <>; -} diff --git a/src/app/(main)/home-bg-video/page.tsx b/src/app/(main)/home-bg-video/page.tsx index 9515dfd..a7a9dfa 100644 --- a/src/app/(main)/home-bg-video/page.tsx +++ b/src/app/(main)/home-bg-video/page.tsx @@ -11,15 +11,6 @@ export default function Home1BGVideoMultiPage() {
- {/* - - */}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..b5d244b --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,54 @@ +"use client"; +import { usePathname } from "next/navigation"; +import { useEffect } from "react"; +import { init_wow } from "@/utils/initWow"; +import { parallaxMouseMovement, parallaxScroll } from "@/utils/parallax"; +import { headerChangeOnScroll } from "@/utils/changeHeaderOnScroll"; +import "@/app/globals.css"; +import "swiper/css"; +import "jarallax/dist/jarallax.min.css"; +import "swiper/css/effect-fade"; +import "react-modal-video/css/modal-video.css"; +import "photoswipe/dist/photoswipe.css"; +import "tippy.js/dist/tippy.css"; +import "@public/assets/css/styles.css"; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + const path = usePathname(); + + useEffect(() => { + init_wow(); + parallaxMouseMovement(); + const mainNav = document.querySelector(".main-nav"); + if (mainNav?.classList.contains("transparent")) { + mainNav.classList.add("js-transparent"); + } else if (!mainNav?.classList?.contains("dark")) { + mainNav?.classList.add("js-no-transparent-white"); + } + + window.addEventListener("scroll", headerChangeOnScroll); + parallaxScroll(); + return () => { + window.removeEventListener("scroll", headerChangeOnScroll); + }; + }, [path]); + + useEffect(() => { + if (typeof window !== "undefined") { + // Import the script only on the client side + // @ts-ignore + import("bootstrap/dist/js/bootstrap.esm").then(() => { + // Module is imported, you can access any exported functionality if + }); + } + }, []); + return ( + + {children} + + ); +} diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx new file mode 100644 index 0000000..280c92d --- /dev/null +++ b/src/app/not-found.tsx @@ -0,0 +1,72 @@ +"use client"; +import Header from "@/components/Header"; +import { BeforeFooterBlock } from "@/components/Blocks/BeforeFooter"; +import { navMenuData } from "@/data/menu"; +import Footer from "@/components/Footer"; +import Link from "next/link"; + +export default function NotFound() { + return ( +
+
+ +
+
+
+ <> + {/* End Navigation Panel */} +
+ {/* Home Section */} +
+
+ {/* Home Section Content */} +
+
+
+
+
+

404

+
+
+

+ The page you were looking for could not be found. +

+
+
+ + + Back To Home Page + +
+
+
+
+
+ {/* End Home Section Content */} +
+
+ {/* End Home Section */} +
+ +
+
+ +
+ {/*
+
+ +
*/} +
+ {/*
*/} +
+
+ ); +} diff --git a/src/components/About.tsx b/src/components/About.tsx index 5ba3bc8..4a4e70e 100644 --- a/src/components/About.tsx +++ b/src/components/About.tsx @@ -32,17 +32,17 @@ export default function About() {

What is Radixact® Radiation Therapy?

- Radixact® is an advanced form of radiation therapy that targets a wide range of cancers. Radixact® is a form - of TomoTherapy®, a system of CT imaging that provides 3D images of the tumor, then targets it more precisely - to minimize the effects on healthy tissue. It also works from all directions to treat tumors more effectively - from multiple angles. + RadixactRadixact® is a cutting-edge radiation therapy designed to treat a wide variety of cancers with + remarkable precision. This advanced treatment uses TomoTherapy® technology, which combines CT imaging to + create detailed, 3D images of your tumor. These images allow us to focus the radiation exactly where it’s + needed, minimizing the impact on surrounding healthy tissue. Radixact® works from all directions, ensuring + that tumors are treated more effectively from multiple angles.

-

What are the Side Effects of Radixact®?

- Radixact® reduces many of the common after-effects of radiation therapy by protecting healthy tissue. Common - side effects of radiation therapy include fatigue and local skin irritation in the treatment area. Radixact® - decreases the occurrence of these problems by leaving healthy tissue as untouched as possible. Radixact® - patients usually go about their daily lives during treatment with minimal disruption. + At Cochise Oncology, we are proud to be the only cancer treatment center in Southern Arizona offering + Radixact®. With daily CT imaging to guide treatment and its ability to target hard-to-reach or recurring + tumors, Radixact® helps reduce radiation exposure to healthy tissue, resulting in fewer side effects and + better outcomes for our patients.

diff --git a/src/components/Blocks/BeforeFooter/index.tsx b/src/components/Blocks/BeforeFooter/index.tsx index c743dd1..9a151ae 100644 --- a/src/components/Blocks/BeforeFooter/index.tsx +++ b/src/components/Blocks/BeforeFooter/index.tsx @@ -5,6 +5,7 @@ export interface BeforeFooterBlockProps { title?: string; description?: string; buttonText?: string; + showLinier?: boolean; } const placeholderTitle = "Begin your path to healing with Cochise Oncology"; @@ -12,36 +13,38 @@ const placeholderDescription = "Our dedicated team in Sierra Vista, AZ is here to support you with hope, strength, and courage. We offer personalized cancer care using innovative treatments in our state-of-the-art facility. Take the first step towards comprehensive, patient-focused treatment by scheduling a consultation. Let us listen to your needs, answer your questions, and create a tailored plan for your journey. Fill out our form to connect with our compassionate experts and discover how Cochise Oncology can stand with you in your fight against cancer."; const placeholderButtonText = "Get Started"; -export function BeforeFooterBlock({ title, description, buttonText }: BeforeFooterBlockProps) { +export function BeforeFooterBlock({ title, description, buttonText, showLinier = true }: BeforeFooterBlockProps) { return (
-
- - - - - -
+ {showLinier && ( +
+ + + + + +
+ )}

{title ?? placeholderTitle}

diff --git a/src/components/Blocks/Form/Country/index.module.scss b/src/components/Blocks/Form/Country/index.scss similarity index 100% rename from src/components/Blocks/Form/Country/index.module.scss rename to src/components/Blocks/Form/Country/index.scss diff --git a/src/components/Blocks/Form/Country/index.tsx b/src/components/Blocks/Form/Country/index.tsx index 206b120..496e346 100644 --- a/src/components/Blocks/Form/Country/index.tsx +++ b/src/components/Blocks/Form/Country/index.tsx @@ -1,23 +1,23 @@ -import type { CountryField } from '@payloadcms/plugin-form-builder/types' -import type { Control, FieldErrorsImpl, FieldValues } from 'react-hook-form' +import type { CountryField } from "@payloadcms/plugin-form-builder/types"; +import type { Control, FieldErrorsImpl, FieldValues } from "react-hook-form"; -import React from 'react' -import { Controller } from 'react-hook-form' -import ReactSelect from 'react-select' +import React from "react"; +import { Controller } from "react-hook-form"; +import ReactSelect from "react-select"; -import { Error } from '../Error' -import { Width } from '../Width' -import classes from './index.module.scss' -import { countryOptions } from './options' +import { Error } from "../Error"; +import { Width } from "../Width"; +import classes from "./index.scss"; +import { countryOptions } from "./options"; export const Country: React.FC< { - control: Control + control: Control; errors: Partial< FieldErrorsImpl<{ - [x: string]: any + [x: string]: any; }> - > + >; } & CountryField > = ({ name, control, errors, label, required, width }) => { return ( @@ -36,7 +36,7 @@ export const Country: React.FC< classNamePrefix="rs" inputId={name} instanceId={name} - onChange={(val) => onChange(val ? val.value : '')} + onChange={(val) => onChange(val ? val.value : "")} options={countryOptions} value={countryOptions.find((c) => c.value === value)} /> @@ -46,5 +46,5 @@ export const Country: React.FC< {required && errors[name] && }
- ) -} + ); +}; diff --git a/src/components/Blocks/Form/Error/index.module.scss b/src/components/Blocks/Form/Error/index.scss similarity index 100% rename from src/components/Blocks/Form/Error/index.module.scss rename to src/components/Blocks/Form/Error/index.scss diff --git a/src/components/Blocks/Form/Gutter/index.module.scss b/src/components/Blocks/Form/Gutter/index.scss similarity index 100% rename from src/components/Blocks/Form/Gutter/index.module.scss rename to src/components/Blocks/Form/Gutter/index.scss diff --git a/src/components/Blocks/Form/Gutter/index.tsx b/src/components/Blocks/Form/Gutter/index.tsx index 1156d8c..1134310 100644 --- a/src/components/Blocks/Form/Gutter/index.tsx +++ b/src/components/Blocks/Form/Gutter/index.tsx @@ -1,26 +1,24 @@ -import React from 'react' +import React from "react"; -import classes from './index.module.scss' +import classes from "./index.scss"; type Props = { - children: React.ReactNode - className?: string - left?: boolean - ref?: React.Ref - right?: boolean -} + children: React.ReactNode; + className?: string; + left?: boolean; + ref?: React.Ref; + right?: boolean; +}; export const Gutter: React.FC }> = (props) => { - const { children, className, left = true, right = true, ref } = props + const { children, className, left = true, right = true, ref } = props; return (
{children}
- ) -} + ); +}; diff --git a/src/components/Blocks/Form/Message/index.module.scss b/src/components/Blocks/Form/Message/index.scss similarity index 98% rename from src/components/Blocks/Form/Message/index.module.scss rename to src/components/Blocks/Form/Message/index.scss index a6cf079..a5b8d46 100644 --- a/src/components/Blocks/Form/Message/index.module.scss +++ b/src/components/Blocks/Form/Message/index.scss @@ -6,4 +6,4 @@ @include mid-break { margin: calc(var(--base) * 0.5) 0 calc(var(--base) * 0.5) 0; } -} +} \ No newline at end of file diff --git a/src/components/Blocks/Form/Message/index.tsx b/src/components/Blocks/Form/Message/index.tsx index 3718aa6..9ba315b 100644 --- a/src/components/Blocks/Form/Message/index.tsx +++ b/src/components/Blocks/Form/Message/index.tsx @@ -4,7 +4,7 @@ import React from "react"; import RichText from "../RichText"; import { Width } from "../Width"; -import classes from "./index.module.scss"; +import classes from "./index.scss"; export const Message: React.FC = ({ message }) => { return ( diff --git a/src/components/Blocks/Form/Number/index.module.scss b/src/components/Blocks/Form/Number/index.scss similarity index 100% rename from src/components/Blocks/Form/Number/index.module.scss rename to src/components/Blocks/Form/Number/index.scss diff --git a/src/components/Blocks/Form/Number/index.tsx b/src/components/Blocks/Form/Number/index.tsx index 0201e8c..0987724 100644 --- a/src/components/Blocks/Form/Number/index.tsx +++ b/src/components/Blocks/Form/Number/index.tsx @@ -5,7 +5,7 @@ import React from "react"; import { Error } from "../Error"; import { Width } from "../Width"; -import classes from "./index.module.scss"; +import classes from "./index.scss"; export const Number: React.FC< { diff --git a/src/components/Blocks/Form/State/index.module.scss b/src/components/Blocks/Form/State/index.scss similarity index 100% rename from src/components/Blocks/Form/State/index.module.scss rename to src/components/Blocks/Form/State/index.scss diff --git a/src/components/Blocks/Form/State/index.tsx b/src/components/Blocks/Form/State/index.tsx index 76ab01f..a466fe9 100644 --- a/src/components/Blocks/Form/State/index.tsx +++ b/src/components/Blocks/Form/State/index.tsx @@ -1,23 +1,23 @@ -import type { StateField } from '@payloadcms/plugin-form-builder/types' -import type { Control, FieldErrorsImpl, FieldValues } from 'react-hook-form' +import type { StateField } from "@payloadcms/plugin-form-builder/types"; +import type { Control, FieldErrorsImpl, FieldValues } from "react-hook-form"; -import React from 'react' -import { Controller } from 'react-hook-form' -import ReactSelect from 'react-select' +import React from "react"; +import { Controller } from "react-hook-form"; +import ReactSelect from "react-select"; -import { Error } from '../Error' -import { Width } from '../Width' -import classes from './index.module.scss' -import { stateOptions } from './options' +import { Error } from "../Error"; +import { Width } from "../Width"; +import classes from "./index.scss"; +import { stateOptions } from "./options"; export const State: React.FC< { - control: Control + control: Control; errors: Partial< FieldErrorsImpl<{ - [x: string]: any + [x: string]: any; }> - > + >; } & StateField > = ({ name, control, errors, label, required, width }) => { return ( @@ -36,7 +36,7 @@ export const State: React.FC< classNamePrefix="rs" id={name} instanceId={name} - onChange={(val) => onChange(val ? val.value : '')} + onChange={(val) => onChange(val ? val.value : "")} options={stateOptions} value={stateOptions.find((t) => t.value === value)} /> @@ -46,5 +46,5 @@ export const State: React.FC< {required && errors[name] && }
- ) -} + ); +}; diff --git a/src/components/Blocks/Form/VerticalPadding/index.module.scss b/src/components/Blocks/Form/VerticalPadding/index.scss similarity index 99% rename from src/components/Blocks/Form/VerticalPadding/index.module.scss rename to src/components/Blocks/Form/VerticalPadding/index.scss index 4419749..c919a28 100644 --- a/src/components/Blocks/Form/VerticalPadding/index.module.scss +++ b/src/components/Blocks/Form/VerticalPadding/index.scss @@ -20,4 +20,4 @@ .bottom-small { padding-bottom: calc(var(--block-padding) / 3); -} +} \ No newline at end of file diff --git a/src/components/Blocks/Form/VerticalPadding/index.tsx b/src/components/Blocks/Form/VerticalPadding/index.tsx index 18f2d76..98f1f7a 100644 --- a/src/components/Blocks/Form/VerticalPadding/index.tsx +++ b/src/components/Blocks/Form/VerticalPadding/index.tsx @@ -1,29 +1,20 @@ -import React from 'react' +import React from "react"; -import classes from './index.module.scss' +import classes from "./index.scss"; -export type VerticalPaddingOptions = 'large' | 'medium' | 'none' | 'small' +export type VerticalPaddingOptions = "large" | "medium" | "none" | "small"; type Props = { - bottom?: VerticalPaddingOptions - children: React.ReactNode - className?: string - top?: VerticalPaddingOptions -} + bottom?: VerticalPaddingOptions; + children: React.ReactNode; + className?: string; + top?: VerticalPaddingOptions; +}; -export const VerticalPadding: React.FC = ({ - bottom = 'medium', - children, - className, - top = 'medium', -}) => { +export const VerticalPadding: React.FC = ({ bottom = "medium", children, className, top = "medium" }) => { return ( -
+
{children}
- ) -} + ); +}; diff --git a/src/components/Blocks/Form/Width/index.module.scss b/src/components/Blocks/Form/Width/index.scss similarity index 100% rename from src/components/Blocks/Form/Width/index.module.scss rename to src/components/Blocks/Form/Width/index.scss diff --git a/src/components/Blocks/Form/Width/index.tsx b/src/components/Blocks/Form/Width/index.tsx index 62766ef..093a1f4 100644 --- a/src/components/Blocks/Form/Width/index.tsx +++ b/src/components/Blocks/Form/Width/index.tsx @@ -1,14 +1,14 @@ -import * as React from 'react' +import * as React from "react"; -import classes from './index.module.scss' +import classes from "./index.scss"; export const Width: React.FC<{ - children: React.ReactNode - width?: number + children: React.ReactNode; + width?: number; }> = ({ children, width }) => { return (
{children}
- ) -} + ); +}; diff --git a/src/components/Blocks/Form/index.module.scss b/src/components/Blocks/Form/index.scss similarity index 100% rename from src/components/Blocks/Form/index.module.scss rename to src/components/Blocks/Form/index.scss diff --git a/src/components/Contacts/Contact.tsx b/src/components/Contacts/Contact.tsx index b5c293d..397b49b 100644 --- a/src/components/Contacts/Contact.tsx +++ b/src/components/Contacts/Contact.tsx @@ -1,78 +1,145 @@ -import { contactItems } from "@/data/contact"; -import React, { ReactNode } from "react"; +"use client"; +import React from "react"; -export interface ContactProps { - children?: ReactNode; -} - -export default function Contact({ children }: ContactProps) { +export default function Contact() { return (
- {/* Left Column */} -
-

Contact Us

-

We’re open to talk to anyone.

- {/* Contact Information */} -
-
- {/* Address */} - {contactItems.map((item: any, index: number) => ( - -
-
- -
-

{item.title}

-
{item.text}
- -
-
- ))} - {/* End Phone */} +
+
+
+

Contact Us

- {/* End Contact Information */}
- {/* End Left Column */} - {/* Right Column */} -
-
- {/* Google Map Column */} -
-
-