// π§ββοΈ FULLY RESTORED DASHBOARD + HOMEWORK + Q&A
import { useState } from 'react';
export default function YTTDashboard() {
const [asanaPractice, setAsanaPractice] = useState(0);
const [breathworkPractice, setBreathworkPractice] = useState(0);
const [videosWatched, setVideosWatched] = useState(0);
const totalVideos = 12;
const [journalEntry, setJournalEntry] = useState("");
const [submittedEntry, setSubmittedEntry] = useState(null);
const [teacherNotes, setTeacherNotes] = useState("");
const [showTeacherView, setShowTeacherView] = useState(false);
const [showPoseList, setShowPoseList] = useState(false);
const [poseNotes, setPoseNotes] = useState({});
const [questionAnswer, setQuestionAnswer] = useState("");
const [submittedAnswer, setSubmittedAnswer] = useState(null);
const [homeworkText, setHomeworkText] = useState("Review your asana alignment and submit a short video.");
const [schedule, setSchedule] = useState([
{ module: 1, title: "Foundations of Yoga + Breathwork", date: "2025-06-01" },
{ module: 2, title: "Sun Salutations + Anatomy I", date: "2025-06-08" },
{ module: 3, title: "Standing Poses + Alignment", date: "2025-06-15" },
{ module: 4, title: "Seated Poses + Adjustments", date: "2025-06-22" },
{ module: 5, title: "Backbends + Chakra Theory", date: "2025-06-29" },
{ module: 6, title: "Twists, Binds, and Pranayama", date: "2025-07-06" },
{ module: 7, title: "Inversions + the Nervous System", date: "2025-07-13" },
{ module: 8, title: "Restorative Yoga + Ethics", date: "2025-07-20" },
{ module: 9, title: "Sequencing & Theming Classes", date: "2025-07-27" },
{ module: 10, title: "Integration + Final Practice Teach", date: "2025-08-03" }
]);
const poseCategories = {
Standing: ["Tadasana (Mountain Pose)", "Utkatasana (Chair Pose)", "Adho Mukha Svanasana (Downward Dog)", "Uttanasana (Standing Forward Bend)", "Virabhadrasana I (Warrior I)", "Virabhadrasana II (Warrior II)", "Virabhadrasana III (Warrior III)", "Utthita Trikonasana (Extended Triangle)", "Parsvakonasana (Side Angle)", "Ardha Chandrasana (Half Moon)", "Parivrtta Trikonasana (Revolved Triangle)", "Parivrtta Parsvakonasana (Revolved Side Angle)"],
Seated: ["Prasarita Padottanasana (Wide-Legged Forward Bend)", "Padangusthasana (Big Toe Pose)", "Padahastasana (Hand Under Foot Pose)", "Paschimottanasana (Seated Forward Bend)", "Janu Sirsasana (Head-to-Knee Forward Bend)", "Baddha Konasana (Bound Angle)", "Upavistha Konasana (Wide-Angle Forward Bend)", "Marichyasana III", "Sukhasana (Easy Pose)", "Padmasana (Lotus Pose)"],
Balancing: ["Vrksasana (Tree Pose)", "Garudasana (Eagle Pose)", "Natarajasana (Dancer Pose)", "Bakasana (Crow Pose)"],
Backbends: ["Bhujangasana (Cobra Pose)", "Urdhva Mukha Svanasana (Upward Facing Dog)", "Salabhasana (Locust Pose)", "Dhanurasana (Bow Pose)", "Setu Bandhasana (Bridge Pose)", "Urdhva Dhanurasana (Wheel Pose)"],
Inversions: ["Halasana (Plow Pose)", "Sarvangasana (Shoulderstand)", "Matsyasana (Fish Pose)"],
Restorative: ["Balasana (Childβs Pose)", "Savasana (Corpse Pose)", "Supta Matsyendrasana (Supine Twist)", "Ardha Matsyendrasana (Half Lord of the Fishes)"]
};
const handleIncrement = (setter) => setter(prev => prev + 1);
const handleScheduleChange = (index, field, value) => {
const updated = [...schedule];
updated[index][field] = value;
setSchedule(updated);
};
const handlePoseNoteChange = (pose, value) => {
setPoseNotes({ ...poseNotes, [pose]: value });
};
return (
<div style={{ padding: '1.5rem', backgroundColor: '#F8F4F8', minHeight: '100vh' }}>
<h1 style={{ fontSize: '2rem', color: '#3E293F', textAlign: 'center', fontWeight: 'bold' }}>πͺ· Welcome to Your Yoga Ashram</h1>
{/* Homework */}
<div style={{ marginTop: '2rem', backgroundColor: '#F0E6F0', border: '2px dashed #8F3886', padding: '1rem', borderRadius: '1rem' }}>
<h2 style={{ color: '#653766' }}>π Homework</h2>
<textarea
value={homeworkText}
onChange={(e) => setHomeworkText(e.target.value)}
style={{ width: '100%', padding: '0.5rem', marginBottom: '0.5rem' }}
/>
<p style={{ fontStyle: 'italic' }}>This is the current assignment students should complete.</p>
</div>
{/* Q&A */}
<div style={{ marginTop: '2rem', backgroundColor: '#F0E6F0', border: '2px dashed #8F3886', padding: '1rem', borderRadius: '1rem' }}>
<h2 style={{ color: '#653766' }}>π Module Q&A</h2>
<p><strong>Question:</strong> What stood out to you most in this weekβs lecture?</p>
<textarea
value={questionAnswer}
onChange={(e) => setQuestionAnswer(e.target.value)}
placeholder="Write your answer here..."
style={{ width: '100%', padding: '0.5rem', marginTop: '0.5rem' }}
/>
<button onClick={() => setSubmittedAnswer(questionAnswer)} style={{ marginTop: '0.5rem' }}>Submit Answer</button>
{submittedAnswer && <p>β
Answer Submitted</p>}
</div>
{/* Calendar */}
<div style={{ marginTop: '2rem', backgroundColor: '#F0E6F0', border: '2px solid #8F3886', padding: '1rem', borderRadius: '1rem' }}>
<h2 style={{ color: '#653766' }}>π
YTT Training Calendar</h2>
<table style={{ width: '100%', borderCollapse: 'collapse' }}>
<thead>
<tr>
<th style={{ textAlign: 'left', padding: '0.5rem' }}>Module</th>
<th style={{ textAlign: 'left', padding: '0.5rem' }}>Title</th>
<th style={{ textAlign: 'left', padding: '0.5rem' }}>Date</th>
</tr>
</thead>
<tbody>
{schedule.map((item, index) => (
<tr key={index}>
<td style={{ padding: '0.5rem' }}>Module {item.module}</td>
<td style={{ padding: '0.5rem' }}>
<input
type="text"
value={item.title}
onChange={(e) => handleScheduleChange(index, 'title', e.target.value)}
style={{ width: '100%', padding: '0.3rem' }}
/>
</td>
<td style={{ padding: '0.5rem' }}>
<input
type="date"
value={item.date}
onChange={(e) => handleScheduleChange(index, 'date', e.target.value)}
style={{ padding: '0.3rem' }}
/>
</td>
</tr>
))}
</tbody>
</table>
</div>
{/* Practice Logs */}
<div style={{ display: 'grid', gap: '1.5rem', gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))', marginTop: '2rem' }}>
<div style={{ backgroundColor: '#F0E6F0', border: '2px solid #8F3886', padding: '1rem', borderRadius: '1rem' }}>
<h2 style={{ color: '#653766' }}>Asana Practice</h2>
<p>Sessions Logged: {asanaPractice}</p>
{asanaPractice >= 5 && <p style={{ color: 'green' }}>πΈ Milestone: 5 Asana sessions!</p>}
<button onClick={() => handleIncrement(setAsanaPractice)}>+ Log Asana</button>
</div>
<div style={{ backgroundColor: '#F0E6F0', border: '2px solid #8F3886', padding: '1rem', borderRadius: '1rem' }}>
<h2 style={{ color: '#653766' }}>Breathwork + Meditation</h2>
<p>Sessions Logged: {breathworkPractice}</p>
{breathworkPractice >= 5 && <p style={{ color: 'green' }}>π¬οΈ Milestone: 5 Breathwork sessions!</p>}
<button onClick={() => handleIncrement(setBreathworkPractice)}>+ Log Session</button>
</div>
<div style={{ backgroundColor: '#F0E6F0', border: '2px solid #8F3886', padding: '1rem', borderRadius: '1rem' }}>
<h2 style={{ color: '#653766' }}>π₯ Video Progress</h2>
<p>{videosWatched}/{totalVideos} Videos Watched</p>
{videosWatched >= totalVideos && <p style={{ color: 'green' }}>π Milestone: All videos complete!</p>}
<progress value={videosWatched} max={totalVideos} style={{ width: '100%' }} />
<button onClick={() => setVideosWatched(v => Math.min(v + 1, totalVideos))}>+ Mark Video Watched</button>
</div>
</div>
{/* Journal */}
<div style={{ marginTop: '2rem', backgroundColor: '#F0E6F0', border: '2px solid #8F3886', padding: '1rem', borderRadius: '1rem' }}>
<h2 style={{ color: '#653766' }}>π Journal & Weekly Reflection</h2>
<p style={{ fontStyle: 'italic' }}>Prompt: "How did this weekβs practice shift your perspective or challenge your growth?"</p>
<textarea
value={journalEntry}
onChange={(e) => setJournalEntry(e.target.value)}
placeholder="Type your reflection here..."
style={{ width: '100%', padding: '0.5rem', marginTop: '0.5rem' }}
/>
<button onClick={() => setSubmittedEntry(journalEntry)} style={{ marginTop: '0.5rem' }}>Submit to Teacher</button>
{submittedEntry && <p>β
Entry Submitted</p>}
</div>
{/* Teacher View */}
<div style={{ marginTop: '2rem' }}>
<button onClick={() => setShowTeacherView(!showTeacherView)}>
{showTeacherView ? "Hide" : "Show"} Teacher View
</button>
{showTeacherView && (
<div style={{ backgroundColor: '#E0A289', border: '2px solid #3E293F', padding: '1rem', marginTop: '1rem', borderRadius: '1rem' }}>
<h2 style={{ color: '#3E293F' }}>ποΈ Teacher View</h2>
<p>Journal Submitted:</p>
<blockquote style={{ fontStyle: 'italic', backgroundColor: '#F8F4F8', padding: '1rem', borderRadius: '0.5rem' }}>{submittedEntry}</blockquote>
<p>Q&A Response:</p>
<blockquote style={{ fontStyle: 'italic', backgroundColor: '#F8F4F8', padding: '1rem', borderRadius: '0.5rem' }}>{submittedAnswer}</blockquote>
<div>
<h3 style={{ color: '#3E293F' }}>π Practice Overview</h3>
<ul>
<li>Asana: {asanaPractice} sessions</li>
<li>Breathwork + Meditation: {breathworkPractice} sessions</li>
<li>Videos Watched: {videosWatched} / {totalVideos}</li>
</ul>
</div>
<div>
<h3 style={{ color: '#3E293F' }}>π Teacher Notes</h3>
<textarea
value={teacherNotes}
onChange={(e) => setTeacherNotes(e.target.value)}
placeholder="Add notes, feedback, or reflection here..."
style={{ width: '100%', padding: '0.5rem' }}
/>
</div>
</div>
)}
</div>
{/* Poses */}
<div style={{ marginTop: '2rem', backgroundColor: '#F0E6F0', border: '2px solid #8F3886', padding: '1rem', borderRadius: '1rem' }}>
<h2 style={{ color: '#653766' }}>π Foundational Asanas β 200hr Training Set</h2>
<button onClick={() => setShowPoseList(!showPoseList)} style={{ marginBottom: '1rem' }}>
{showPoseList ? 'Hide Asanas' : 'View Pose List'}
</button>
{showPoseList && (
<div style={{ display: 'grid', gap: '1rem' }}>
{Object.entries(poseCategories).map(([category, poses]) => (
<div key={category} style={{ border: '1px solid #8F3886', borderRadius: '0.5rem', padding: '1rem', backgroundColor: '#fff' }}>
<h3 style={{ color: '#8F3886', marginBottom: '0.5rem' }}>{category} Poses</h3>
<ul style={{ listStyleType: 'disc', paddingLeft: '1.2rem' }}>
{poses.map(pose => (
<li key={pose} style={{ marginBottom: '0.5rem' }}>
<strong>{pose}</strong>
<br />
<textarea
value={poseNotes[pose] || ''}
onChange={(e) => handlePoseNoteChange(pose, e.target.value)}
placeholder="Add personal notes or teaching cues..."
style={{ width: '100%', marginTop: '0.25rem', padding: '0.4rem', borderRadius: '0.25rem' }}
/>
</li>
))}
</ul>
</div>
))}
</div>
)}
</div>
</div>
);
}