diff --git a/app/(admin)/_components/header.tsx b/app/(admin)/_components/header.tsx index a5f5976..a8b6e5f 100644 --- a/app/(admin)/_components/header.tsx +++ b/app/(admin)/_components/header.tsx @@ -14,6 +14,7 @@ import { Bell, Settings, LogOut, + FileText, } from "lucide-react"; import { useAppTheme } from "@/components/ThemeProvider"; import { ThemeToggle } from "@/components/ThemeToggle"; @@ -98,6 +99,19 @@ export function Header() { Book Appointment + + + Documentation + {/* Right Side Actions */} diff --git a/app/(admin)/_components/side-nav.tsx b/app/(admin)/_components/side-nav.tsx index be2b176..a4ae384 100644 --- a/app/(admin)/_components/side-nav.tsx +++ b/app/(admin)/_components/side-nav.tsx @@ -12,6 +12,7 @@ import { Menu, X, Heart, + FileText, } from "lucide-react"; import { useAppTheme } from "@/components/ThemeProvider"; import { useAuth } from "@/hooks/useAuth"; @@ -20,6 +21,7 @@ import { toast } from "sonner"; const navItems = [ { label: "Dashboard", icon: LayoutGrid, href: "/admin/dashboard" }, { label: "Book Appointment", icon: Calendar, href: "/admin/booking" }, + { label: "Deliverables", icon: FileText, href: "/deliverables" }, ]; export default function SideNav() { diff --git a/app/(admin)/admin/dashboard/page.tsx b/app/(admin)/admin/dashboard/page.tsx index d500554..d782ac2 100644 --- a/app/(admin)/admin/dashboard/page.tsx +++ b/app/(admin)/admin/dashboard/page.tsx @@ -1,6 +1,7 @@ "use client"; import { useState, useEffect } from "react"; +import Link from "next/link"; import { Select, SelectContent, @@ -8,6 +9,7 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { Button } from "@/components/ui/button"; import { Users, UserCheck, @@ -18,6 +20,7 @@ import { TrendingUp, ArrowUpRight, ArrowDownRight, + FileText, } from "lucide-react"; import { useAppTheme } from "@/components/ThemeProvider"; import { getAllUsers } from "@/lib/actions/auth"; @@ -242,7 +245,17 @@ export default function Dashboard() { Here's an overview of your practice today

- @@ -252,6 +265,7 @@ export default function Dashboard() { Last Year + {loading ? ( diff --git a/app/(auth)/login/page.tsx b/app/(auth)/login/page.tsx index a2e99cd..d7d9bfb 100644 --- a/app/(auth)/login/page.tsx +++ b/app/(auth)/login/page.tsx @@ -375,33 +375,14 @@ function LoginContent() { {/* Heading */}

{step === "login" && "Welcome back"} - {step === "signup" && "Create an account"} {step === "verify" && "Verify your email"}

{/* Subtitle */} {step === "login" && (

- New to Attune Heart Therapy?{" "} - - Sign up - + Sign in to access your admin dashboard

)} - {step === "signup" && ( -

- Already have an account?{" "} - -

- )} {step === "verify" && registeredEmail && (

We've sent a verification code to {registeredEmail} @@ -519,168 +500,6 @@ function LoginContent() { )} - {/* Signup Form */} - {step === "signup" && ( -

- {/* First Name Field */} -
- - handleSignupChange("first_name", e.target.value)} - className={`h-11 ${isDark ? 'bg-gray-700 border-gray-600 text-white placeholder:text-gray-400' : 'bg-white border-gray-300 text-gray-900'} ${errors.first_name ? 'border-red-500' : ''}`} - required - /> - {errors.first_name && ( -

{errors.first_name}

- )} -
- - {/* Last Name Field */} -
- - handleSignupChange("last_name", e.target.value)} - className={`h-11 ${isDark ? 'bg-gray-700 border-gray-600 text-white placeholder:text-gray-400' : 'bg-white border-gray-300 text-gray-900'} ${errors.last_name ? 'border-red-500' : ''}`} - required - /> - {errors.last_name && ( -

{errors.last_name}

- )} -
- - {/* Email Field */} -
- - handleSignupChange("email", e.target.value)} - className={`h-11 ${isDark ? 'bg-gray-700 border-gray-600 text-white placeholder:text-gray-400' : 'bg-white border-gray-300 text-gray-900'} ${errors.email ? 'border-red-500' : ''}`} - required - /> - {errors.email && ( -

{errors.email}

- )} -
- - {/* Phone Field */} -
- - handleSignupChange("phone_number", e.target.value)} - className={`h-11 ${isDark ? 'bg-gray-700 border-gray-600 text-white placeholder:text-gray-400' : 'bg-white border-gray-300 text-gray-900'}`} - /> -
- - {/* Password Field */} -
- -
- handleSignupChange("password", e.target.value)} - className={`h-11 pr-12 ${isDark ? 'bg-gray-700 border-gray-600 text-white placeholder:text-gray-400' : 'bg-white border-gray-300 text-gray-900'} ${errors.password ? 'border-red-500' : ''}`} - required - /> - -
- {errors.password && ( -

{errors.password}

- )} -
- - {/* Confirm Password Field */} -
- -
- handleSignupChange("password2", e.target.value)} - className={`h-11 pr-12 ${isDark ? 'bg-gray-700 border-gray-600 text-white placeholder:text-gray-400' : 'bg-white border-gray-300 text-gray-900'} ${errors.password2 ? 'border-red-500' : ''}`} - required - /> - -
- {errors.password2 && ( -

{errors.password2}

- )} -
- - {/* Submit Button */} - -
- )} {/* OTP Verification Form */} {step === "verify" && ( @@ -775,17 +594,17 @@ function LoginContent() { )} - {/* Back to signup */} + {/* Back to login */}
diff --git a/app/(pages)/deliverables/page.tsx b/app/(pages)/deliverables/page.tsx new file mode 100644 index 0000000..343d222 --- /dev/null +++ b/app/(pages)/deliverables/page.tsx @@ -0,0 +1,311 @@ +"use client"; + +import { Button } from "@/components/ui/button"; +import { ArrowLeft, Heart } from "lucide-react"; +import React from "react"; +import ReactMarkdown, { Components } from "react-markdown"; +import remarkGfm from "remark-gfm"; + +const ReadmePage = () => { + const readmeContent = ` +## Attune Heart Therapy + +Welcome to your Attune Heart Therapy platform! This documentation provides everything you need to understand and navigate the complete system, including the landing page, booking system, user/client dashboard, and admin dashboard. + +--- + +## 📂 What's Included + +Your Attune Heart Therapy platform includes a comprehensive system for managing therapy appointments and client interactions: + +| Section | Description | +| --------------------- | ------------------------------------------------------------------------------------------------------- | +| Landing Page | Public-facing homepage with navigation, services overview, and booking access | +| Booking System | User-friendly appointment booking flow where clients can request therapy sessions | +| User Dashboard | Client portal to view appointments, manage profile, and track booking status | +| Admin Dashboard | Administrative interface to manage appointments, view statistics, and schedule sessions | + +--- + +## 🔐 Admin Dashboard Access + +### Step 1: Navigate to Login + +1. Go to your website's homepage +2. Click on the **"Admin Panel"** link in the footer (under Quick Links) +3. Or navigate directly to: \`https://attunehearttherapy.com/login\` + +### Step 2: Login Credentials + +**Email Address:** \`Hello@AttuneHeartTherapy.com\` + +**Password:** \`G&n2S;ffTc8f\` + +### Step 3: Access Dashboard + +1. Enter your admin email address +2. Enter your password +3. Click **"Sign In"** +4. You will be automatically redirected to the Admin Dashboard + +--- + +## 🔗 Quick Access Links + +[Visit Attune Heart Therapy](https://attunehearttherapy.com/) - Official website + +[Access Admin Dashboard](https://attunehearttherapy.com/login) - Login to manage your practice + +[Book an Appointment](https://attunehearttherapy.com/book-now) - Client booking page + +--- + +## 📞 Support & Contact + +For technical assistance, questions, or issues: + +**Email:** [info@BlackBusinessLabs.com](mailto:info@BlackBusinessLabs.com) + +**Phone:** [(646) 895-4856](tel:+16468954856) - *CEO Tray Bailey's direct mobile* + +--- + +*For questions or additional support, please contact Black Business Labs at the information provided above.*`; + + const components: Components = { + h1: ({ node, ...props }) => ( +

+ ), + h2: ({ node, children, ...props }) => { + // Extract text content from children + const extractText = (child: any): string => { + if (typeof child === 'string') return child; + if (typeof child === 'number') return String(child); + if (React.isValidElement(child)) { + const childProps = child.props as any; + if (childProps?.children) { + return React.Children.toArray(childProps.children).map(extractText).join(''); + } + } + return ''; + }; + + const textContent = React.Children.toArray(children).map(extractText).join(''); + + // Check if this is the title heading + if (textContent.includes('Attune Heart Therapy - System Overview')) { + return ( +

+ {children} +

+ ); + } + + return ( +

+ {children} +

+ ); + }, + h3: ({ node, ...props }) => ( +

+ ), + p: ({ node, ...props }) => ( +

+ ), + a: ({ node, ...props }) => ( + + ), + ul: ({ node, ...props }) => ( +