landing and nav (hopefully) done
|
@ -1,5 +1,5 @@
|
||||||
const Accupuncture = () => {
|
const Accupuncture = () => {
|
||||||
return <div>Accupuncture</div>;
|
return <main>Accupuncture</main>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default Accupuncture;
|
export default Accupuncture;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
const Articles = () => {
|
const Articles = () => {
|
||||||
return <div>Articles</div>;
|
return <main>Articles</main>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default Articles;
|
export default Articles;
|
||||||
|
|
|
@ -13,4 +13,7 @@
|
||||||
@apply text-primary-500;
|
@apply text-primary-500;
|
||||||
@apply font-abel;
|
@apply font-abel;
|
||||||
}
|
}
|
||||||
|
main {
|
||||||
|
@apply text-lg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ import "./globals.css";
|
||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Dr. Richard Feely",
|
title: "Dr. Richard Feely | Home",
|
||||||
description: `Dr. Feely is a highly accomplished physician with over 25 years
|
description: `Dr. Feely is a highly accomplished physician with over 25 years
|
||||||
of experience in osteopathic medicine, acupuncture, herbal medicine, and
|
of experience in osteopathic medicine, acupuncture, herbal medicine, and
|
||||||
family practice. He specializes in the treatment of neuromusculoskeletal
|
family practice. He specializes in the treatment of neuromusculoskeletal
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
const NeuroOcularRelease = () => {
|
const NeuroOcularRelease = () => {
|
||||||
return <div>NeuroOcularRelease</div>;
|
return <main>NeuroOcularRelease</main>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default NeuroOcularRelease;
|
export default NeuroOcularRelease;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
const Osteopathy = () => {
|
const Osteopathy = () => {
|
||||||
return <div>Osteopathy</div>;
|
return <main>Osteopathy</main>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default Osteopathy;
|
export default Osteopathy;
|
||||||
|
|
12
app/page.tsx
|
@ -1,5 +1,15 @@
|
||||||
|
import Accomplishments from "./views/Accomplishments";
|
||||||
|
import Bio from "./views/Bio";
|
||||||
|
import Landing from "./views/Landing";
|
||||||
|
|
||||||
const Home = () => {
|
const Home = () => {
|
||||||
return <div>Home</div>;
|
return (
|
||||||
|
<main>
|
||||||
|
<Landing></Landing>
|
||||||
|
<Bio></Bio>
|
||||||
|
<Accomplishments></Accomplishments>
|
||||||
|
</main>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default Home;
|
export default Home;
|
||||||
|
|
17
app/views/Accomplishments.tsx
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
const Accomplishments = () => {
|
||||||
|
return (
|
||||||
|
<section className="text-primary-500">
|
||||||
|
<div className="h-screen w-full bg-primary-300 flex items-center">
|
||||||
|
<div className="w-11/12 lg:w-5/6 mx-auto flex items-center flex-col md:flex-row">
|
||||||
|
<div className="lg:basis-60">
|
||||||
|
<h1 className="z-[45] text-7xl lg:text-9xl font-cormorant pb-10">
|
||||||
|
Richard A. Feely, DO
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Accomplishments;
|
17
app/views/Bio.tsx
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
const Bio = () => {
|
||||||
|
return (
|
||||||
|
<section className="text-primary-500">
|
||||||
|
<div className="h-screen w-full bg-primary-100 flex items-center">
|
||||||
|
<div className="w-11/12 lg:w-5/6 mx-auto flex items-center flex-col md:flex-row">
|
||||||
|
<div className="basis-2/5">
|
||||||
|
<h1 className="z-[45] text-7xl lg:text-9xl font-cormorant pb-10">
|
||||||
|
Richard A. Feely, DO
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Bio;
|
35
app/views/Landing.tsx
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
const Landing = () => {
|
||||||
|
return (
|
||||||
|
<section className="text-primary-100">
|
||||||
|
<div className="min-h-screen w-full bg-primary-500 flex items-center relative z-[-2] overflow-hidden">
|
||||||
|
<div className="w-11/12 lg:w-5/6 mt-32 my-14 md:mt-12 md:my-0 mx-auto flex items-center flex-col gap-12 md:gap-4 md:flex-row md:justify-around">
|
||||||
|
<div className="basis-6/12">
|
||||||
|
<div className="relative">
|
||||||
|
<div className="before:absolute before:-left-52 before:-top-44 before:z-[-1] before:content-textAccent">
|
||||||
|
<h1 className="text-7xl lg:text-7xl font-cormorant pb-10">
|
||||||
|
Richard A. Feely, DO
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h2 className="text-2xl">
|
||||||
|
Dr. Feely is a highly accomplished physician with over 25 years of
|
||||||
|
experience in osteopathic medicine, acupuncture, herbal medicine,
|
||||||
|
and family practice. He specializes in the treatment of
|
||||||
|
neuromusculoskeletal pain—especially back pain, neck pain
|
||||||
|
and headaches.
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div className="basis-4/12 flex justify-center">
|
||||||
|
<img
|
||||||
|
className="shadow-superPortrait shadow-secondary-500 rounded-3xl max-w-sm w-full"
|
||||||
|
src="/dr_feely_cutout_headshot_2.png"
|
||||||
|
alt="Picture of Dr. Feely"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Landing;
|
|
@ -2,11 +2,16 @@ import { useState } from "react";
|
||||||
import NavLink from "./NavLink";
|
import NavLink from "./NavLink";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
|
currentPage: string;
|
||||||
|
setCurrentPage: (page: string) => void;
|
||||||
currentPageClasses: string;
|
currentPageClasses: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const NavPages = ({ currentPageClasses }: Props) => {
|
const NavPages = ({
|
||||||
const [currentPage, setCurrentPage] = useState("/");
|
currentPage,
|
||||||
|
setCurrentPage,
|
||||||
|
currentPageClasses,
|
||||||
|
}: Props) => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<NavLink
|
<NavLink
|
||||||
|
|
|
@ -1,16 +1,44 @@
|
||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { Bars3Icon, XMarkIcon } from "@heroicons/react/24/solid";
|
import { Bars3Icon, XMarkIcon } from "@heroicons/react/24/solid";
|
||||||
import NavPages from "./NavPages";
|
import NavPages from "./NavPages";
|
||||||
|
|
||||||
const Navbar = () => {
|
const Navbar = () => {
|
||||||
|
const [currentPage, setCurrentPage] = useState("/");
|
||||||
|
const [isTopOfPage, setIsTopOfPage] = useState(true);
|
||||||
const [menuActive, setMenuActive] = useState(false);
|
const [menuActive, setMenuActive] = useState(false);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const handleScroll = () => {
|
||||||
|
if (window.scrollY === 0) {
|
||||||
|
setIsTopOfPage(true);
|
||||||
|
} else {
|
||||||
|
setIsTopOfPage(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
window.addEventListener("scroll", handleScroll);
|
||||||
|
return () => window.removeEventListener("scroll", handleScroll);
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<nav className="bg-primary-500 text-primary-100">
|
<nav
|
||||||
|
className={
|
||||||
|
"bg-primary-500 text-primary-100 fixed top-0 w-full " +
|
||||||
|
(isTopOfPage
|
||||||
|
? "bg-transparent"
|
||||||
|
: "z-40 bg-opacity-60 backdrop-blur-sm drop-shadow")
|
||||||
|
}
|
||||||
|
>
|
||||||
<div className="mx-auto w-11/12 lg:w-5/6 flex justify-between items-center">
|
<div className="mx-auto w-11/12 lg:w-5/6 flex justify-between items-center">
|
||||||
<div className="font-cormorant text-2xl p-5">Richard A. Feely, DO</div>
|
<div
|
||||||
|
className={
|
||||||
|
"font-cormorant text-2xl p-5 " +
|
||||||
|
(isTopOfPage ? "text-transparent select-none" : "")
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Richard A. Feely, DO
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Burger icon */}
|
{/* Burger icon */}
|
||||||
<div className="md:hidden w-[30px] text-tertiary-300">
|
<div className="md:hidden w-[30px] text-tertiary-300">
|
||||||
|
@ -18,7 +46,7 @@ const Navbar = () => {
|
||||||
</div>
|
</div>
|
||||||
{/* Burger menu */}
|
{/* Burger menu */}
|
||||||
{menuActive ? (
|
{menuActive ? (
|
||||||
<div className="text-lg animate-fadeIn fixed bottom-0 right-0 z-50 h-full bg-secondary-500 drop-shadow-lg ">
|
<div className="text-lg animate-fadeIn z-50 fixed top-0 right-0 h-screen bg-secondary-500 drop-shadow-lg ">
|
||||||
<div className="px-12 py-5 flex flex-col gap-6 text-primary-500 text-right">
|
<div className="px-12 py-5 flex flex-col gap-6 text-primary-500 text-right">
|
||||||
<div className="pb-3 flex justify-end ">
|
<div className="pb-3 flex justify-end ">
|
||||||
<XMarkIcon
|
<XMarkIcon
|
||||||
|
@ -26,7 +54,11 @@ const Navbar = () => {
|
||||||
onClick={() => setMenuActive((e) => !e)}
|
onClick={() => setMenuActive((e) => !e)}
|
||||||
></XMarkIcon>
|
></XMarkIcon>
|
||||||
</div>
|
</div>
|
||||||
<NavPages currentPageClasses="text-primary-100"></NavPages>
|
<NavPages
|
||||||
|
currentPage={currentPage}
|
||||||
|
setCurrentPage={setCurrentPage}
|
||||||
|
currentPageClasses="text-primary-100"
|
||||||
|
></NavPages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
|
@ -34,8 +66,17 @@ const Navbar = () => {
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Nav Bar */}
|
{/* Nav Bar */}
|
||||||
<div className="hidden md:flex font-abel tems-center gap-6 p-5 text-lg text-tertiary-300">
|
<div
|
||||||
<NavPages currentPageClasses="text-secondary-500"></NavPages>
|
className={
|
||||||
|
"hidden md:flex font-abel tems-center gap-6 text-lg text-tertiary-300 " +
|
||||||
|
(isTopOfPage ? "px-5 py-24" : "p-5")
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<NavPages
|
||||||
|
currentPage={currentPage}
|
||||||
|
setCurrentPage={setCurrentPage}
|
||||||
|
currentPageClasses="text-secondary-500"
|
||||||
|
></NavPages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
BIN
public/dr_feely_cutout.png
Normal file
After Width: | Height: | Size: 17 MiB |
BIN
public/dr_feely_cutout_headshot.png
Normal file
After Width: | Height: | Size: 8.4 MiB |
BIN
public/dr_feely_cutout_headshot.xcf
Normal file
BIN
public/dr_feely_cutout_headshot_2.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
public/feely_logo_dark_transparent.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
BIN
public/feelycenter.png
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
public/franciscan.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
public/malta.gif
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
public/midwestern_college.jpg
Normal file
After Width: | Height: | Size: 466 KiB |
BIN
public/tcm_tests.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
public/text_accent.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
public/womack.png
Normal file
After Width: | Height: | Size: 51 KiB |
|
@ -47,6 +47,12 @@ module.exports = {
|
||||||
fadeIn: "fadeIn 75ms ease-in",
|
fadeIn: "fadeIn 75ms ease-in",
|
||||||
fadeOut: "fadeOut 500ms ease-out",
|
fadeOut: "fadeOut 500ms ease-out",
|
||||||
},
|
},
|
||||||
|
boxShadow: {
|
||||||
|
superPortrait: "75px 75px 250px 0px",
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
textAccent: "url('/text_accent.png')",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [],
|
plugins: [],
|
||||||
|
|