diff --git a/app/about-us/page.js b/app/about-us/page.js index 4bd8b2b..c963a78 100644 --- a/app/about-us/page.js +++ b/app/about-us/page.js @@ -94,15 +94,15 @@ export default function Home() {
-
- About Us +
+ About Us

Comprehensive Physiotherapy & Rehabilitation Clinic in Etobicoke

-

Welcome to Rapha Rehab Physiotherapy Massage Therapy Clinic Etobicoke – physiotherapy clinic in etobicoke managed by Registered Physiotherapists offering reliable physiotherapy treatment Services, Sports injury physiotherapy, Pelvic floor physiotherapy, Chiropractor, Massage therapy , Acupuncture treatment, Foot Reflexology, Osteopathy, custom knee braces, orthotics, spinal decompression therapy, concussion management, chronic pain management, workplace injury management, Naturopathy and home care physiotherapy Services in Etobicoke

+

Welcome to Rapha Rehab Physiotherapy Massage Therapy Clinic Etobicoke – physiotherapy clinic in etobicoke managed by Registered Physiotherapists offering reliable physiotherapy treatment Services, Sports injury physiotherapy, Pelvic floor physiotherapy, Chiropractor, Massage therapy , Acupuncture treatment, Foot Reflexology, Osteopathy, custom knee braces, orthotics, spinal decompression therapy, concussion management, chronic pain management, workplace injury management, Naturopathy and home care physiotherapy Services in Etobicoke

- Book Appointment + Book Appointment
@@ -174,15 +174,15 @@ export default function Home() {
-
- Why Choos Us +
+ Why Choos Us

Your Trusted Physiotherapy Team in Etobicoke

-

Physiotherapy etobicoke is a team of health care professionals working together to help get you better, faster. This helps us in rendering our best possible services to our clients

+

Physiotherapy etobicoke is a team of health care professionals working together to help get you better, faster. This helps us in rendering our best possible services to our clients

- Book Appointment + Book Appointment
@@ -323,7 +323,7 @@ export default function Home() {
+
- Professionals + Professionals
@@ -332,9 +332,9 @@ export default function Home() {
- + + +
- Years Experience + Years Experience
@@ -343,9 +343,9 @@ export default function Home() {
- + + +
- Happy Customers + Happy Customers
@@ -356,7 +356,7 @@ export default function Home() {
%
- Client Satisfaction + Client Satisfaction diff --git a/app/caregivers/page.js b/app/caregivers/page.js index 4a065d4..cf5464e 100644 --- a/app/caregivers/page.js +++ b/app/caregivers/page.js @@ -80,15 +80,15 @@ export default function Home() {
-
- At NanoCare +
+ At NanoCare

A professional and friendly care provider

At NanoCare, we select Caregivers who are passionate about providing in home care to those in need on a daily basis.

- Become A Caregiver + Become A Caregiver
diff --git a/app/covid-19-updates/page.js b/app/covid-19-updates/page.js index bf6cedc..5086a66 100644 --- a/app/covid-19-updates/page.js +++ b/app/covid-19-updates/page.js @@ -44,7 +44,7 @@ export default function Home() {
{/* Top Intro */} -
+

COVID 19 UPDATES

The COVID 19 pandemic has created increased stress and anxiety levels for many people. @@ -67,7 +67,7 @@ export default function Home() {

Virtual Therapy
-

VIRTUAL THERAPY

+

VIRTUAL THERAPY

As an alternative to receiving direct in-clinic therapy, we continue to offer all clients the option to receive tele-rehabilitation or virtual therapy services to @@ -93,7 +93,7 @@ export default function Home() {

-

HOME THERAPY

+

HOME THERAPY

The convenience of having a physiotherapist come to your home eliminates barriers faced by those who can’t drive. This improved access to therapy makes it easier for diff --git a/app/layout.js b/app/layout.js index 750919d..3008c36 100644 --- a/app/layout.js +++ b/app/layout.js @@ -1,21 +1,28 @@ -import "@/node_modules/react-modal-video/css/modal-video.css" -import "../public/assets/css/bootstrap.css" -import "../public/assets/css/color.css" -import "../public/assets/css/style.css" -import 'swiper/css' +import "@/node_modules/react-modal-video/css/modal-video.css"; +import "../public/assets/css/bootstrap.css"; +import "../public/assets/css/color.css"; +import "../public/assets/css/style.css"; +import "swiper/css"; // import "swiper/css/navigation" -import "swiper/css/pagination" -import 'swiper/css/free-mode'; -import { poppins } from '@/lib/font' +import "swiper/css/pagination"; +import "swiper/css/free-mode"; +import { poppins } from "@/lib/font"; +import ContactFloat from "@/components/ContactFloat" +import AutoPopup from "@/components/AutoPopup"; + export const metadata = { - title: 'Best Pain Relief & Physiotherapy - Repharehab Clinic', - description: 'Best pain relief physiotherapy clinic', -} + title: "Best Pain Relief & Physiotherapy - Repharehab Clinic", + description: "Best pain relief physiotherapy clinic", +}; export default function RootLayout({ children }) { - return ( - - {children} - - ) + return ( + + + {children} + + + + + ); } diff --git a/app/shortcodes/page.js b/app/shortcodes/page.js index 1e25251..74d8fdb 100644 --- a/app/shortcodes/page.js +++ b/app/shortcodes/page.js @@ -208,8 +208,8 @@ export default function Home() {

-

Talk to one of our homecare experts, who understands your situation

-

+

Talk to one of our homecare experts, who understands your situation

+

You want to know your care provider understands what you’re going through and has the experience and expertise to address your needs. With NanoCare, you are not alone. We know how to help you because we have learned through personal experience as well as caring for hundreds of families and clients who face @@ -233,8 +233,8 @@ export default function Home() {

-

Arrange for a Free In-Home Assessment and receive a personalized care proposal that fits your needs

-

+

Arrange for a Free In-Home Assessment and receive a personalized care proposal that fits your needs

+

Every care situation has differences and nuances; therefore, a free in-home assessment is required to prepare a thorough care plan just for your needs that you can review, revise, and approve. This personalized care plan will identify the best ways our caregiver can serve you. @@ -260,8 +260,8 @@ export default function Home() {

-

Review Our Care Proposal & Revise as You See Fit

-

+

Review Our Care Proposal & Revise as You See Fit

+

Once you have reviewed and approved the care plan, at NanoCare we guarantee caregiver compatibility. We strive to make a successful match at the first shift. We follow up after the first shift so that you can tell us whether we have the right match. In the unusual case where we miss, we use the feedback to @@ -285,8 +285,8 @@ export default function Home() {

-

Schedule for Care to Start

-

+

Schedule for Care to Start

+

NanoCare provides a secure, confidential, and easy-to-use Web application called Family Room that you can access using a mobile device or on a desktop computer. You can see the schedule, who the caregivers are, tasks planned, completed, and, if incomplete, the reason for it, and any care notes and concerns. @@ -363,14 +363,14 @@ export default function Home() {

-
+

Why Choose Us

-

NanoCare is committed to being your shoulder to lean on and providing honest advice for your loved one’s situation during this delicate time. No one should feel alone when looking for senior home care solutions.

+

NanoCare is committed to being your shoulder to lean on and providing honest advice for your loved one’s situation during this delicate time. No one should feel alone when looking for senior home care solutions.

- Book Appointment + Book Appointment
@@ -432,7 +432,7 @@ export default function Home() {
-
+

Testimonials carousel

@@ -457,7 +457,7 @@ export default function Home() {
+
- Home health care professionals + Home health care professionals
@@ -468,7 +468,7 @@ export default function Home() {
+
- Office locations + Office locations
@@ -479,7 +479,7 @@ export default function Home() {
- States served by nanocare + States served by nanocare
@@ -490,7 +490,7 @@ export default function Home() {
%
- Our client satisfaction rate + Our client satisfaction rate
@@ -556,7 +556,7 @@ export default function Home() {
-
+

Tabbed & vertical tabbed content

{/*Sortable Galery*/} diff --git a/components/AutoPopup.js b/components/AutoPopup.js new file mode 100644 index 0000000..c852702 --- /dev/null +++ b/components/AutoPopup.js @@ -0,0 +1,222 @@ +"use client"; +import { useState, useEffect } from "react"; +import ReCAPTCHA from "react-google-recaptcha"; +import axios from "axios"; + +export default function AutoPopup() { + const [show, setShow] = useState(false); + const [formData, setFormData] = useState({ + username: "", + lname: "", + email: "", + phone: "", + subject: "", + message: "", + }); + const [formErrors, setFormErrors] = useState({}); + const [captchaToken, setCaptchaToken] = useState(null); + const [alert, setAlert] = useState({ show: false, type: "", message: "" }); + + useEffect(() => { + const timer = setTimeout(() => setShow(true), 5000); + return () => clearTimeout(timer); + }, []); + + const handleChange = (e) => { + const { name, value } = e.target; + setFormData((prev) => ({ ...prev, [name]: value })); + }; + + const handleCaptchaChange = (token) => { + setCaptchaToken(token); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + + const errors = {}; + if (!formData.username.trim()) errors.username = "First Name is required."; + if (!formData.lname.trim()) errors.lname = "Last Name is required."; + if (!formData.email.trim()) errors.email = "Email is required."; + if (!formData.phone.trim()) errors.phone = "Phone is required."; + if (!formData.subject.trim()) errors.subject = "Subject is required."; + if (!formData.message.trim()) errors.message = "Message is required."; + if (!captchaToken) errors.captcha = "Please verify the CAPTCHA."; + + setFormErrors(errors); + if (Object.keys(errors).length > 0) return; + + const emailData = { + ...formData, + message: `Subject: ${formData.subject}

Message: ${formData.message}`, + to: "bloor@rapharehab.ca", + senderName: "Rapha Rehab Auto Popup", + recaptchaToken: captchaToken, + }; + + try { + const res = await axios.post("https://mailserver.metatronnest.com/send", emailData, { + headers: { "Content-Type": "application/json" }, + }); + + setAlert({ + show: true, + type: "success", + message: res?.data?.message || "Message sent successfully!", + }); + + setFormData({ + username: "", + lname: "", + email: "", + phone: "", + subject: "", + message: "", + }); + setCaptchaToken(null); + setFormErrors({}); + } catch (error) { + setAlert({ + show: true, + type: "danger", + message: "Failed to send message. Please try again later.", + }); + } + }; + + if (!show) return null; + + return ( + <> +
setShow(false)} + >
+ +
+ + +
+

+ Welcome to Rapha Rehab. +

+

+ We’re here to help — send us a message below. +

+
+
+
+
+ {alert.show && ( +
{alert.message}
+ )} + +
+
+
+ + {formErrors.username && {formErrors.username}} +
+ +
+ + {formErrors.lname && {formErrors.lname}} +
+ +
+ + {formErrors.email && {formErrors.email}} +
+ +
+ + {formErrors.phone && {formErrors.phone}} +
+ +
+ + {formErrors.subject && {formErrors.subject}} +
+ +
+ + {formErrors.message && {formErrors.message}} +
+ +
+ + {formErrors.captcha && {formErrors.captcha}} +
+ +
+ +
+
+
+
+
+
+
+ + ); +} diff --git a/components/ContactFloat.js b/components/ContactFloat.js new file mode 100644 index 0000000..d1c8d4f --- /dev/null +++ b/components/ContactFloat.js @@ -0,0 +1,43 @@ +"use client"; +import React from "react"; + +function ContactFloat() { + return ( +
+ + Call + +
+ ); +} + +const styles = { + container: { + position: "fixed", + bottom: "24px", + left: "24px", + zIndex: 9999, + }, + button: { + backgroundColor: "#bc0000", + padding: "16px", + borderRadius: "50%", + boxShadow: "0 4px 6px rgba(0,0,0,0.2)", + display: "flex", + alignItems: "center", + justifyContent: "center", + textDecoration: "none", + width: "56px", + height: "56px", + }, + icon: { + width: "28px", + height: "28px", + }, +}; + +export default ContactFloat; diff --git a/components/elements/Shortcodes.js b/components/elements/Shortcodes.js index 3b6c186..0ffb684 100644 --- a/components/elements/Shortcodes.js +++ b/components/elements/Shortcodes.js @@ -64,7 +64,7 @@ The leadership team at NanoCare discusses what home care means to them and how N
-

+

{content[activeTab]}

diff --git a/components/sections/home/AreaOfInjury.js b/components/sections/home/AreaOfInjury.js index 3b72cb5..d723d6c 100644 --- a/components/sections/home/AreaOfInjury.js +++ b/components/sections/home/AreaOfInjury.js @@ -25,9 +25,9 @@ export default function AreaOfInjury() {
-
- Area Of Injury -

+
+ Area Of Injury +

Start Your Treatment Today! Visit our healthcare team in Etobicoke.

@@ -55,7 +55,7 @@ export default function AreaOfInjury() { ))}
- View All + View All

diff --git a/components/sections/home1/Testimonial.js b/components/sections/home1/Testimonial.js index f158dea..1c39d7c 100644 --- a/components/sections/home1/Testimonial.js +++ b/components/sections/home1/Testimonial.js @@ -11,8 +11,8 @@ export default function Testimonial() {
-
- Testimonials +
+ Testimonials

What Our Clients Say About Rapha Rehab

diff --git a/public/assets/css/module-css/gallery.css b/public/assets/css/module-css/gallery.css index 78f3034..00ca3ae 100644 --- a/public/assets/css/module-css/gallery.css +++ b/public/assets/css/module-css/gallery.css @@ -75,8 +75,8 @@ margin: 0px 10px; font-size: 18px; line-height: 30px; - color: #676767; - border: 1px solid rgba(103, 103, 103, 0.3); + color: #ffffff; + border: 1px solid rgba(255, 255, 255, 0.3); border-radius: 5px; text-align: center; padding: 9px 30px; @@ -90,6 +90,12 @@ border-color: var(--theme-color); } +.sortable-masonry .filter-tabs-new li.active{ + color: #fff; + background: #fff; + border-color: #fff; +} + .gallery-page-section .gallery-block-one .inner-box{ margin-bottom: 30px; } diff --git a/public/assets/css/style.css b/public/assets/css/style.css index 2e2e108..79e51dc 100644 --- a/public/assets/css/style.css +++ b/public/assets/css/style.css @@ -481,6 +481,11 @@ background: var(--theme-color); } + .theme-btn.btn-one-new { + background: #fff !important; + color: #bc0000 !important; + } + .theme-btn.btn-two { background: var(--secondary-color); } @@ -490,6 +495,8 @@ background: #bc0000; } + + .theme-btn:before, .theme-btn:after { content: ""; @@ -782,6 +789,17 @@ display: block; } + .sec-title-1 .sub-title-1 { + position: relative; + display: inline-block; + font-size: 24px; + line-height: 34px; + font-family: var(--soleil); + color: #fff !important; + letter-spacing: 0.8px; + margin-bottom: 15px; + } + .sec-title .sub-title { position: relative; display: inline-block; @@ -803,6 +821,23 @@ text-transform: capitalize; } + .sec-title-1 h2 { + position: relative; + display: block; + font-size: 50px; + line-height: 65px; + font-weight: 700; + color: #fff !important; + margin: 0px; + text-transform: capitalize; + } + + .h3-white{ + + color: #fff !important; + + } + @media only screen and (max-width: 1024px) { .sec-title h2 { @@ -1985,6 +2020,12 @@ background-color: #ffe6e6; } + .tex-color-1{ + + color: #ffffff !important; + + } + .list-style-one li { position: relative; display: block;